专利摘要:
バスケット計算エンジンがデータのストリームを受信し、かつそのデータに基づいてバスケット価値の計算を加速するために導入される。好ましい実施形態では、バスケット計算エンジンは金融市場データを処理して、金融商品バスケットの純資産価値(NAV)を計算するために使用される。バスケット計算エンジンはコプロセッサ上に導入されることができ、パイプラインによって実現されることもでき、パイプラインはバスケット連関探索モジュール、およびバスケット価値更新モジュールを含むことが好ましい。コプロセッサは、フィールドプログラマブルゲートアレイ(FPGA)などの再構成可能論理デバイスであることが好ましい。
公开号:JP2011510382A
申请号:JP2010542380
申请日:2009-01-09
公开日:2011-03-31
发明作者:インデツク,ロナルド・エス;シングラ,ナビーン;テイール,ジヤステイン・アール;テイラー,デイビツド・イー;ブロデイ,ベンジヤミン・シー;マクビカー,ナサニエル・エス
申请人:エクセジー・インコーポレイテツド;
IPC主号:G06F15-80
专利说明:

[0001] 本発明は、ストリーミングデータに基づくバスケット計算業務を行う分野に関し、詳細にはストリーミング金融市場データに基づくバスケット計算業務を行う分野に関する。]
背景技術

[0002] 以下の段落に、本明細書で使用される様々な用語の定義をいくつか提供する。これらの段落はまた、これらの用語に関連する予備知識も提供する。]
[0003] 金融商品:本明細書で使用される「金融商品」は、一般に企業体または政府機関に関連する株式所有権、負債、または債権を表す契約を指し、契約は売買対象である。金融商品の例は、株式、債券、商品、通貨市場で売買される通貨などを含むが、現金および小切手の品目が金融取引市場外でどのように使用されるかという意味の現金および小切手を含まない(すなわち、現金または小切手を使用して食料雑貨店で食料雑貨類を購入するのは、本明細書で使用される「金融商品」という用語に含まれない。同様に、デビットカードを使用して現金自動預け払い機から現金で100ドルを引き出すのは、本明細書で使用される「金融商品」という用語に含まれない)。]
[0004] 金融市場データ:本明細書で使用される「金融市場データ」という用語は、金融商品を売買するための新しいオッファ、金融商品の販売完了の指示、以前に報告された金融商品の販売に対する訂正の通知、そのような取引に関連する管理メッセージなどを個々に表す一連のメッセージに含まれる、またはそれらから得られるデータを指す。]
[0005] バスケット:本明細書で使用される「バスケット」という用語は、複数の要素を含む要素の集合を指し、各要素は1つ以上の価値を有する。集合には1つ以上の正味価値(NV)を割り当てられることがある。NVは集合内の複数の要素の価値から得られる。たとえば、バスケットは様々な科学実験によるデータポイントの集合でもよい。各データポイントは、サイズ、質量などの関連する値を有することがある。サイズの加重和を計算することによりサイズをNV得る、質量の加重和を計算することにより質量NVを得るなどすることができる。バスケットの別の例が金融商品の集合であり、以下に説明される。]
[0006] 金融商品バスケット:本明細書で使用される「金融商品バスケット」という用語は、その要素が金融商品を含むバスケットを指す。金融商品バスケットには、1つ以上の純資産価値(NAV)を割り当てられることがある。NAVはバスケット内の要素の価値から得られる。バスケットに含まれることがある金融商品の例には、有価証券(株式)、債券、オプション、ミューチュアルファンド、上場投資信託などである。金融商品バスケットは、標準インデックス、上場投資信託(ETF)、ミューチュアルファンド、個人ポートフォリオなどを表すことがある。バスケット内の金融商品ごとの最終販売価格の加重和を計算することにより最終販売NAVを得る、バスケット内の金融商品ごとの現在の最高買い価格の加重和を計算することにより買いNAVを得るなどすることがある。]
[0007] GPP:本明細書で使用される「汎用プロセッサ」(すなわちGPP)という用語は、固定形態を有し、その機能が可変のハードウェア装置を指す。この可変機能は、命令をフェッチし、それらの命令を実行することにより定義される。従来の中央処理装置(CPU)が一般的な例である。GPPの例示的実施形態は、IntelのXeonプロセッサ、およびAMDのOpteronプロセッサを含む。]
[0008] 再構成可能論理回路:本明細書で使用される「再構成可能論理回路」という用語は、その形態および機能が製造後にフィールドで大幅に変更される(すなわち、再構成される)ことがある任意の論理回路技術を指す。これはGPPとは対照的に、GPPの機能は製造後に変更することができるが、その形態は製造時点のままである。]
[0009] ソフトウェア:本明細書で使用される「ソフトウェア」という用語は、GPPまたは他の処理装置上に導入されるデータ処理機能を指す。ソフトウェアは、それがロードされる装置の形態を変更または定義するために使用されることはできない。]
[0010] ファームウェア:本明細書で使用される「ファームウェア」という用語は、再構成可能論理回路または他の処理装置上に導入されるデータ処理機能を指す。ファームウェアは、それがロードされる装置の形を変更または定義するために使用されることがある。]
[0011] コプロセッサ:本明細書で使用される「コプロセッサ」という用語は、主プロセッサを有する計算システム内の他の構成要素と協力して動作するように設計された計算エンジンを指す(主プロセッサ自体が、マルチコアプロセッサアーキテクチャなど、複数のプロセッサを含む場合がある)。一般に、コプロセッサは、特定の1組のタスクを実行するように最適化され、システム性能を最適化するために主プロセッサ(一般にGPPである)からタスクを取り除くために使用される。コプロセッサにより実行されるタスクの範囲は、コプロセッサのアーキテクチャに応じて固定されることも、変更可能なこともある。固定されたコプロセッサアーキテクチャの例は、広範囲のタスクを実行するグラフィック処理装置、および比較的限られた1組のタスクを実行する浮動小数点数値コプロセッサを含む。再構成可能コプロセッサアーキテクチャの例は、広範囲な固定またはプログラム可能な計算エンジンを実装するように再構成されることがあるフィールドプログラマブルゲートアレイ(FPGA)などの再構成可能論理デバイスを含む。コプロセッサの機能は、ソフトウェアおよび/またはファームウェアにより定義されることがある。]
[0012] ハードウェアアクセラレーション:本明細書で使用される「ハードウェアアクセラレーション」という用語は、主プロセッサから1つ以上の処理タスクを取り除くための、コプロセッサ上に実装されたソフトウェアおよび/またはファームウェアを使用して、主プロセッサに比べてこれらのタスクの処理遅延を低減することを指す。]
[0013] バス:本明細書で使用される「バス」という用語は、デバイスおよび記憶場所がアドレスによりアクセスされる任意の物理的相互接続を包含する論理バスを指す。本発明を実施する際に使用される可能性のあるバスの例は、PCIファミリのバス(たとえば、PCI−XおよびPCI−Express)およびHyperTransportバスを含むが、これらに限定されない。]
[0014] パイプライン:本明細書で使用される「パイプライン」、「パイプラインシーケンス」、または「チェーン」という用語は、あるアプリケーションモジュールの出力が次のアプリケーションモジュールの入力に順次接続される、アプリケーションモジュールの配列を指す。このパイプライン配列により、各アプリケーションモジュールが、所与のクロックサイクルの間に受け取る任意のデータに独立に作用を及ぼし、次にもう1つのクロックサイクルの間にその出力を次の下流のアプリケーションモジュールに順次渡すことが可能となる。]
発明が解決しようとする課題

[0015] 売買および相場などの大量のイベントが常に起こっている取引日の間中の金融商品バスケットの価値を厳密に追跡する能力は、非常に困難な仕事である。金融商品バスケットの基になる金融商品のポートフォリオの一部となっている金融商品について行われるあらゆる売買が、そのバスケット価値に変化を引き起こす可能性がある。バスケット価値を計算するために使用される従来技術が、バスケット価値に影響を与える大量のイベントに遅れないようについていくことができず、それにより、従来技術では、現在の計算されたバスケット価値が、現在の市況ではなく、むしろ過去の数ミリ秒から数秒までの任意の時点に存在していた市況を反映しているために、市場の現在の状態に比べると、金融商品バスケット価値について不正確さを引き起こしていたと本明細書で本発明者は考える。]
[0016] 上述のように、金融商品バスケットは、標準インデックス、ETF、ミューチュアルファンド、個人ポートフォリオなどを表すことがある。]
[0017] インデックスが企業のグループのパフォーマンスを表す。ここで、グループは、時価総額(たとえば、S&P500)、工業(ダウジョーンズ工業平均株価(DJIA))などの様々な基準により決定されることができる。]
[0018] ミューチュアルファンドは、専門的に管理された形の集合的投資であり、買い手が投資信託所有者に一定量の金銭を支払い、引き換えに投資信託の株式を受け取る。]
[0019] ETFはミューチュアルファンドと非常に似ているが、ちょうど株式のように取引所で取引日の間中、売買されることができるという重要な違いがある。したがって、ETFの価格は、その基になるポートフォリオの変化によるだけでなく、ETFの株式自体に対する市場の供給と需要によっても変動する。したがって、ETFはミューチュアルファンドの多様性だけでなく株式の売買動力学も提供する。さらに、ETFは一般に、十分に確立した市場インデックスを追跡し、インデックスのリターンを再現しようとする。]
[0020] 個人ポートフォリオは、彼/彼女の個人投資目標について個人により定義される金融商品の集合体である。]
[0021] 金融商品バスケットは、基になる1組の金融商品により定義される。バスケットの定義はまた、バスケット内の金融商品ごとの加重を指定する。たとえば、Bで示される仮想バスケットについて考えてみる。バスケットBは、記号Ciを有するM個の金融商品を含む。ここで、i=1、2、・・・、Mである。さらに、バスケット内の各金融商品iの加重が、wiにより示される。ここで、i=1、2、・・・、Mである。バスケットに関連付けられているのが、その純資産価値(NAV)として知られるその金銭価値の尺度である。バスケットB内の各金融商品iのこの瞬間での価値がTi(i=1、2、・・・、M)と仮定すると、バスケットBのNAVが以下のように計算されることができる:



ここで、dはバスケットに関連付けられた除数であり、以下により詳細に説明される。したがって、式(1)は、バスケットのNAVが、バスケット内の金融商品の価値の加重和であることを規定する。ここで、除数は正規化因子の働きをする。]
[0022] Tの値は、金融商品の株式の価格を表す。価格は最終販売価格/最終売買価格(終値)、購入価格に対する最高のオファー(買い呼値)、販売価格に対する最高のオファー(売り呼値)、または売買に対する特定のオファー価格(指値注文)として表現されることができる。]
[0023] wの値は、バスケットごとに別の仕方で定義されることができる。たとえば、時価総額加重インデックス(S&P 500など)では、金融商品の加重は、金商品の発行済み株式の数に「自由変動相場制」因子を乗算されたものとして定義されることができる。ここで、自由変動相場制因子は、0と1の間の数であり、金融商品の一定株式が公に売買に利用できないという事実を調整する。等加重インデックス(DJIAなど)では、金融商品の加重は1に設定される。ETFおよび個人ポートフォリオでは、金融商品の加重は、バスケットの金融商品ごとに多くの株式を所有することが、そのETFまたは個人ポートフォリオの1株を所有することに等しいという事実を反映する指定された数値に等しく設定されることができる。したがって、バスケットBの1つの株式を所有するためには、金融商品C1のw1株式、金融商品C2のw2株式など金融商品CMのwM株式までを購入しなければならない。]
[0024] dの値はまた、バスケットごとに別の仕方で定義されることができる。インデックスについては、除数は現在のインデックス除数に設定されることができる、この除数は、インデックス(たとえば、S&P 500については500)での金融商品の数、または何らかの他の指定された数値とすることができる。ETFについては、除数は取引日の間に変化する可能性がある(除数はまたインデックスに対しても変化する可能性があるため)。]
[0025] 上記に示されるように、バスケットの基になる金融商品の1つの価値に変化があるときはいつも、そのバスケットに対するNAVは、式(1)に従って計算されるべきである。しかしながら、取引所からの金融市場データメッセージが、高速でチッカ装置(ticker plant)などのプラットフォームに流れ込む。たとえば、オプション価格報告機関(options price reporting authority、OPRA)は、2008年1月のこのメッセージ速度をほぼ800,000メッセージ/秒となると予想する。これらのメッセージはそれぞれ、潜在的に複数のNAV再計算を引き起こすことがある。さらに、同じ金融商品が複数のバスケットの構成要素となっていることがあるので、すべての金融市場データメッセージについてバスケットNAV値を追跡するためには、毎秒行われる必要があるNAV計算の数は、少なくとも1、000万NAV計算/秒のオーダになると本明細書で本発明者は見積もる。一度に1つの更新(システムが行う必要があり得る、バスケット計算に関連のない他のタスクを含む)だけを行わなければならない従来の解決策は、その順次的性質のためにこのような高い更新速度に遅れないようについていくことができないと本明細書で本発明者は考える。]
[0026] 金融トレーダが非常に高速にバスケットNAVを計算することができることが非常に望ましいので、この欠点は問題である。一例がこの望ましさを実証する。上記で説明されたように、ETFは取引所で通常の株式のように売買されることができるバスケットである。ETFのポートフォリオは、取引日の始めに定義され、まれな出来事を除いては取引日の間中、固定されたままである。ETFの株式は、取引日の間中、以下のように動作する生成過程により生成されることができる。買い手が投資信託の所有者に、ETFを構成する金融商品の指定されたポートフォリオ、およびこれらの金融商品に対する配当支払いに等しい量の現金支払い(および、場合によっては取引手数料)を与える。次に、投資信託は買い手にETFの株式を発行する。ETFの株式はまた、同様の方法で基になる金融商品として償還されることができる。したがって、投資家は、投資信託所有者にETFの株式(および、場合によっては取引手数料としていくらかの現金)を与え、代わりに、投資家は、ETFを構成する金融商品のポートフォリオ、およびこれらの金融商品に対する配当支払いに等しい現金を受け取る。]
[0027] 取引日の間、ETFの株式の価格は、供給と需要に従って変動し、ETFのNAVは、ETFのポートフォリオ内の金融商品の供給と需要に従って変化する。取引日の間に、ETFの売買価格がそのNAVから外れることは、十分起こり得る。ETFの価格がNAVよりも高い場合、ETFは「額面以上で」売買していると言われる。ETFの価格がNAVよりも低い場合、ETFは「額面価格を割って」売買していると言われる。金融トレーダがETF株式価格とETF NAVの相違を検出すると、彼/彼女はその相違を利用して、裁定取引を介して利益を得ることができる。]
[0028] 1つのシナリオでは、TETFで示されるETF株式価格が、ETFのNAVより高いと仮定する。この場合、トレーダが以下のステップを実行することができる:
ETFのポートフォリオ内の金融商品の株式をNAVにほぼ等しい総額で購入することによりバスケットを整理(assemble)する、
整理されたバスケットを投資信託所有者と交換することによりETF株式を生成する、
TEFTにほぼ等しい価格でETFを取引所で売る。]
[0029] TETFとNAVとの差が、取引手数料、および他の現金支払いを十分埋め合わせるほど大きい場合、トレーダは、これらの行為により利益を得ることができる。さらに、この利益はリスクのない裁定取引により実現される(これらのステップは即座に行われることができると仮定する)。]
[0030] 別のシナリオでは、TETFで示されるETF株式価格が、ETFのNAVより低いと仮定する。この場合、トレーダがETF株式を購入し、それをポートフォリオ内の金融商品の株式に償還し、これらの金融商品株式を取引所で売ることができる。ここも、TEFTとNAVとの差が、取引手数料、および他の現金支払いを十分埋め合わせるほど大きい場合、トレーダは、実質的にリスクなしに利益を得ることができる。]
[0031] ETFについてこのようなリスクのない裁定取引により利益を得る際の重要な要素は、ETFの株式価格とETFのNAVとの差を検出することである。そのような相違を検出する最初のトレーダが、最大の利益を得る立場にあり、NAV計算の遅延が重要になる。利益獲得機会の検出に向けた競争で競争相手に勝つためには、NAV計算はできるだけ素早く行われるべきである。]
[0032] 上記で説明されたETFシナリオとは別に、バスケットNAV計算のもう1つの有用性が、バスケットのポートフォリオがどうなっているかの尺度をNAVが提供することである。着実に上昇するNAVが、そのようなバスケットにさらに投資することが利益になることがあることを示す。一方、下落するNAVが、損失を避けるためにバスケットのポートフォリオを売ることが望ましいことがあることを示す。この戦略は、金融商品のポートフォリオ全体の多様化により、リスクを軽減することにより利益を提供するバスケットを有する特定の金融商品の株式を売買する場合に採用される戦略と似ている(すなわち、全体としてバスケットに上昇するNAVがある場合、そのバスケットへの投資は、バスケット内の特定の金融商品のいずれかが如何に利益を生んでいるかとは望ましくは切り離される)。]
課題を解決するための手段

[0033] 当該技術分野における大容量低遅延バスケット価値計算に必要なことを満足させる取り組みにおいて、本明細書で本発明者は、高速データストリーム内のデータに基づいて、そのデータがプロセッサを通って流れるときに、1組のバスケットに対するバスケット価値を計算する手法を開示する。]
[0034] 本発明の好ましい実施形態の一様態によれば、本発明者は、コプロセッサがバスケット計算を行うために使用されるバスケット価値計算手法を開示する。バスケット計算の計算負荷をコプロセッサに肩代わりさせることにより、システムの主プロセッサが解放されて、別のタスクを実行することができる。コプロセッサハードウェアが、フィールドプログラマブルゲートアレイ(FPGA)などの再構成可能論理回路を使用してバスケット計算を加速することが好ましい。そうする際に、好ましい実施形態が以下の特許および特許出願に開示された、基になるハードウェアアクセラレート技術を利用することが好ましい。これらは、「Associated Database Scanning and Information Retrieval」と題する米国特許第6,711,558号明細書、「Associative Database Scanning and Information Retrieval using FPGA Devices」と題する米国特許第7,139,743号明細書、「Intelligent Data Storage and Processing Using FPGA Devices」と題する米国特許出願公開第2006/0294059号明細書、「Method and Apparatus for Performing Biosequence Similarity Searching」と題する米国特許出願公開第2007/0067108号明細書、「Method and Apparatus for Protein Sequence Alignment Using FPGA Devices」と題する米国特許出願公開第2008/0086274号明細書(2007年8月10日に提出され、米国出願通し番号11/836,947号により公開された)、「Method and Device for High Performance Regular Expression Pattern Matching」と題する米国特許出願公開第2007/0130140号明細書、「Method and Apparatus for Approximate Pattern Matching」と題する米国特許出願公開2007/0260602号明細書、「Firmware Socket Module for FPGA−Based Pipeline Processing」と題する米国特許出願公開第2007/0174841号明細書、「Method and System for High Throughput Blockwise Independent Encryption/Decryption」と題する米国特許出願公開第2007/0237327号明細書、「Method and System for High Speed Options Pricing」と題する米国特許出願公開第2007/0294157号、および2007年6月19日に出願された「High Speed Processing of Financial Information Using FPGA Devices」と題する係属中の米国出願通し番号11/765,306号であり、それぞれの開示全体が本明細書に参照により組み込まれる。]
[0035] 本発明の好ましい実施形態の別の様態によれば、本発明者は、そのようなバスケット計算に含まれる異なるタスクがパイプライン内の異なるモジュールに任せられることができることを開示する。たとえば、あるパイプラインモジュールが、ストリーム内の現在のデータイベントによりどのバスケットが影響を及ぼされるかを決定するように構成されることができる。別のパイプラインモジュールが、影響を及ぼされるバスケットに関する情報を受信し、かつこれらの影響を及ぼされるバスケットごとの新しいバスケット価値を示すデータを計算するように構成されることができる。これらのモジュールを一緒にパイプライン化することにより、2つのモジュールは、異なるメッセージおよび/またはバスケットを互いに並列に同時に処理することができる。]
[0036] 好ましい実施形態では、このパイプラインは、バスケット価値更新モジュールと通信するバスケット連関(association)探索モジュールを含む。バスケット連関探索モジュールは、各データメッセージによりどのバスケットが影響を及ぼされるかを決定するように構成され、一方、バスケット価値更新モジュールは、データメッセージ内の情報に基づいて影響を及ぼされるバスケットごとに少なくとも1つの新しい価値を計算するように構成される(たとえば、金融市場データを処理する一実施形態では、この情報は、金融市場データメッセージ内の金融商品価格情報とすることができる)。]
[0037] バスケット価値更新モジュールは、より詳細に以下に説明されるように、更新されるバスケット価値の計算に差分計算手法を利用することが好ましい。そのような手法を用いると、金融商品など、どれだけ多くの要素が所与のバスケットの構成要素であるかに関係なく、各バスケット価値を計算するのに必要な算術演算の数は変わらない。さらに、バスケット価値更新モジュールは、任意選択で、並列計算論理回路を使用して、同じバスケットに対する複数の異なる種別のバスケット価値を同時に計算するように構成されることがある。]
[0038] バスケット連関探索モジュールは、バスケット価値計算のためにバスケット価値更新モジュールにより必要とされるデータの少なくとも一部を記憶するバスケットセット表にアクセスすることが好ましい。金融情報に関係する好ましい実施形態では、このデータは、金融商品に関係する新しいメッセージが受信されたときに、バスケット計算に必要とされる適切なデータが取り出されることができるように、金融商品により表内で間接的にインデックスされることができる。間接処理を提供するために、金融商品によりバスケットセット表内へのポインタをインデックスする第2の表が利用される。]
[0039] さらに、パイプラインが再構成可能論理デバイスなどのコプロセッサ上に導入されたファームウェアパイプラインを含む一実施形態では、これらのモジュールの設計は、コプロセッサのハードウェア能力に適応されることができ、それにより、データストリームがラインの速度で処理されることができ、一方で主プロセッサが依然として他のタスクを自由に行うことができるように、バスケット計算を能率的にするというある水準の相乗効果を提供する。]
[0040] 本発明者はまた、パイプラインは、バスケット価値更新モジュールの下流の価格イベントトリガモジュールを利用することができることに注目する。価格イベントトリガモジュールは、更新されたバスケット価値のうち顧客により指定されたトリガ条件を満たすものがあるかどうかを決定するように構成されることができる。次に、顧客により指定されたトリガ条件を満たすどんな更新されたバスケット価値も、関係がある顧客(たとえば、特定のトレーダ、特定のアプリケーションなど)宛に転送されることができる。そうすることにより、顧客はバスケット計算パイプラインの低遅延の性質を利用して、間に合うことがある売買機会を知ることができる。]
[0041] さらに、パイプラインは、価格イベントトリガモジュールの下流のイベント発生器モジュールを利用することができる。イベント発生器モジュールの役割は、価格イベントトリガモジュールにより誘発されるトリガに応答して、顧客に引き渡すためのメッセージイベントを生成することである。このメッセージイベントは、更新されたバスケット価値を含むことが好ましい。]
[0042] その上さらに、バスケット連関探索モジュール(および、パイプライン内のその下流モジュール)により処理される金融市場データメッセージの量を制限するために、パイプラインは、バスケット連関探索モジュールの上流のメッセージ修飾子フィルタモジュールを利用することができる。メッセージ修飾子フィルタモジュールは、バスケット計算に関係しないメッセージを金融市場データメッセージストリームから捨てるように構成されることが好ましい。]
[0043] 本明細書に記載されたようなパイプラインは、本発明の一実施形態で使用されて、金融商品バスケット、および現在の市場の状況に関連して裁定取引条件(上記で論じられたETF裁定取引シナリオなど)が発生するときに、それを特定することができる。低遅延バスケット計算パイプラインを介してこれらの裁定取引条件を即座に検出することにより、トレーダが、検出された裁定取引条件を利用する売買を1つ以上の取引所で行うことができるようになる。]
[0044] 以下の説明および図面を検討すれば、本発明のこれらおよび他の特徴および利点が、当業者には明らかである。]
図面の簡単な説明

[0045] ハードウェアアクセラレートされたバスケット計算が行われることができるシステムの例示的実施形態を示す図である。
ハードウェアアクセラレートされたバスケット計算が行われることができるシステムの例示的実施形態を示す図である。
コプロセッサ140として使用するための例示的プリント回路基板を示す図である。
コプロセッサ140として使用するための例示的プリント回路基板を示す図である。
複数の再構成可能論理デバイスにわたりファームウェアパイプラインがどのように導入されることができるかの例を示す図である。
バスケット計算を行うためにコプロセッサがどのように使用されることができるかの高い階層の構成図である。
差分計算手法を使用して更新されたバスケット価格を計算するための例示的処理フローを示す図である。
本発明の一実施形態による例示的バスケット計算エンジンパイプラインを示す図である。
例示的バスケット連関探索モジュールを示す図である。
例示的バスケットセットポインタ表を示す図である。
例示的バスケットセット表を示す図である。
例示的バスケット価値更新モジュールを示す図である。
バスケット価値更新モジュール内のNAV計算論理回路の例示的実施形態を示す図である。
バスケット価値更新モジュール内のNAV計算論理回路の例示的実施形態を示す図である。
バスケット価値更新モジュール内のNAV計算論理回路の例示的実施形態を示す図である。
複数のNAV更新エンジンを利用するバスケット価値更新モジュールの例示的実施形態を示す図である。
本発明の別の実施形態による例示的バスケット計算エンジンパイプラインを示す図である。
例示的価格イベントトリガモジュールを示す図である。
価格イベントトリガモジュール内のNAV−トリガ比較論理回路の例示的実施形態を示す図である。
複数の顧客特有価格イベントトリガモジュールを利用する価格イベントトリガモジュールの例示的実施形態を示す図である。
本発明の別の実施形態による例示的バスケット計算エンジンパイプラインを示す図である。
例示的イベント発生器モジュールを示す図である。
本発明のさらに別の実施形態による例示的バスケット計算エンジンパイプラインを示す図である。
例示的メッセージ修飾子フィルタモジュールを示す図である。
本発明のさらに別の実施形態による例示的バスケット計算エンジンパイプラインを示す図である。
バスケット計算エンジンパイプラインが利用されることができる例示的チッカ装置アーキテクチャを示す図である。]
実施例

[0046] 図1aは高速バスケット計算を行うように構成されるシステム100の例示的実施形態を示す。システム100は、コプロセッサ140によるハードウェアアクセラレートされたデータ処理能力を利用して、バスケット計算を行うことが好ましい。システム100内には、コプロセッサ140が、(ネットワークインタフェース110を介して)ネットワーク120からシステム100に流れ込むデータを受信するように配置される。好ましい実施形態では、システム100は、金融商品データを受信し、かつ金融商品バスケットに対するバスケット計算を行うように利用される。したがって、ネットワーク120は、システム100が、取引所自体(たとえば、NYSE、NASDAQなど)、またはサードパーティの提供業者(たとえば、SavvisまたはBTRadiansなどのエクストラネット提供業者)などの金融データの情報源にアクセスすることができるネットワークを含むことが好ましい。そのような入力データは、金融商品に関連する売買および相場などのイベントを表すメッセージである一連の金融市場データメッセージを含むことが好ましい。これらのメッセージは、当該技術分野で知られているいくつかの形式のうちどれでも存在することができる。] 図1a
[0047] プロセッサ112およびRAM108により定義されるコンピュータシステムは、当業者により理解されるどんな商品のコンピュータシステムでもよい。たとえば、コンピュータシステムはIntelのXeonシステムでも、AMDのOpteronシステムでもよい。したがって、プロセッサ112は、システム100の中央プロセッサまたは主プロセッサの役を果たすが、GPPを含むことが好ましい。]
[0048] 好ましい実施形態では、コプロセッサ140は再構成可能論理デバイス102を含む。システムバス106を介して再構成可能論理デバイス102にデータが流れ込むことが好ましいが、他の設計アーキテクチャの可能性がある(図2b参照)。再構成可能論理デバイス12は、フィールドプログラマブルゲートアレイ(FPGA)であることが好ましいが、これが事実である必要はない。システムバス106はまた、再構成可能論理デバイス102をRAM108だけでなくプロセッサ112と相互接続することができる。好ましい実施形態では、システムバス106は、PCI−Xバスでも、PCI−Expressバスでもよいが、これが事実である必要はない。] 図2b
[0049] 再構成可能論理デバイス102は、その機能を定義するその上に導入されたファームウェアモジュールを有する。ファームウェアソケットモジュール104が、再構成可能論理デバイス内への、およびそこからのデータ移動要件(コマンドデータもターゲットデータも)を処理し、それにより、同様に再構成可能論理デバイス上に導入されるファームウェアアプリケーションモジュール(FAM)チェーン150への整合性のあるアプリケーションインタフェースを提供する。FAMチェーン150のFAM150iが、ファームウェアソケットモジュール404からチェーン150を通って流れるどんなデータに対しても指定されたデータ処理操作を行うように構成される。本発明の好ましい実施形態による再構成可能論理回路上に導入されることができるFAMの好ましい実施形態が、以下に説明される。]
[0050] FAMにより行われる特定のデータ処理操作は、FAMがファームウェアソケットモジュール104から受信するコマンドデータにより制御/パラメータ化される。このコマンドデータは、FAMに特有なものとすることができ、コマンドを受信すると同時に、FAMは受信されたコマンドにより制御されるデータ処理操作を実行するように自分を配列する。たとえば、データと鍵との間の完全一致操作を行うように構成されたFAM内で、FAMの完全一致操作は、完全一致操作が行われる鍵を定義するようにパラメータ化されることができる。この方法では、完全一致操作を行うように構成されたFAMが、そのFAM内の1つ以上の異なる鍵に新しいパラメータをただロードすることにより、異なる完全一致操作を行うように容易に再配列されることができる。バスケットに関係する別の例として、1つ以上の金融商品をバスケットに追加する/そこから削除するバスケット計算エンジンを構成する1つ以上のFAMにコマンドが発行されることができる。]
[0051] 受信されたコマンドにより指定されたデータ処理操作を行うようにFAMが配列されると、そのFAMは、ファームウェアソケットモジュールから受信するデータストリームに自分が指定されたデータ処理操作をいつでも実行できる。したがって、FAMは適切なコマンドにより配列されて、指定された方法で指定されたデータストリームを処理することができる。FAMが自分のデータ処理操作を完了すると、FAMに自分を再配列させて、それにより行われるデータ処理操作の性質を変える別のコマンドがそのFAMに送信されることができる。FAMがハードウェアの速度で動作する(それにより、FAMを介したデータの高スループットを提供する)だけでなく、FAMが柔軟に再プログラムされて、そのデータ処理操作のパラメータを変更することができる。]
[0052] FAMチェーン150は、パイプライン化された順序で配列された複数のファームウェアアプリケーションモジュール(FAM)150a、150b、・・・を含むことが好ましい。しかしながら、ファームウェアパイプライン内で、FAM150iの1つ以上の並列経路が利用されることができることは留意されるべきである。たとえば、ファームウェアチェーンは、第1のパイプライン経路内に配列された3つのFAM(たとえば、FAM150a、150b、150c)、および第2のパイプライン経路内に配列された4つのFAM(たとえば、FAM150d、150e、150f、および150g)を含むことがあり、第1および第2のパイプライン経路は互いに並列である。さらに、ファームウェアパイプラインは、既存のパイプライン経路から離れる1つ以上の経路分岐を有することができる。本発明の実行者は、所与のアプリケーションの処理の必要に基づいてFAMチェーン150についてFAMの適切な配列を設計することができる。]
[0053] 通信経路130が、ファームウェアソケットモジュール104を、パイプライン化されたFAMのうち第1のFAM150aの入力に接続する。第1のFAM150aの入力は、FAMチェーン150への入口点の役割を果たす。通信経路132が、パイプライン化されたFAMのうちの最後のFAM150mの出力をファームウェアソケットモジュール104に接続する。最後のFAM150mの出力は、FAMチェーン150からの出口点の役割を果たす。通信経路130も通信経路132も複数ビットの経路であることが好ましい。]
[0054] 具体的にはファームウェアソケットモジュールに入る、およびそこから出るデータフローに関連する、システム100により使用されるソフトウェアおよびハードウェア/ソフトウェアインタフェースの性質は、上記で参照され組み込まれた米国特許出願公開第2007/0174841号明細書でより詳細に記載されている。]
[0055] 図1bは、システム100の別の例示的実施形態を示す。図1bの例では、システム100は、ディスクコントローラ114を介してバス106と通信するデータストア142を含む。したがって、コプロセッサ140を通って流れるデータはまた、データストア142から発することもある。データストア142は、どんなデータ記憶装置/システムであってもよいが、何らかの形の大容量記憶媒体であることが好ましい。たとえば、データストア142は、Seagateのディスクのアレイなどの磁気記憶装置でもよい。] 図1b
[0056] 図2aは、図1aから図1bの実施形態のどれについても、システム100内のコプロセッサ140として使用するための商品のコンピュータシステムのPCI−XバスまたはPCI−eバス106に接続されることができるプリント回路基板またはカード200を示す。図2aの例では、プリント回路基板は、メモリ装置202、およびPCI−Xバスコネクタ204と通信するFPGA102(XilinxのVirtex II FPGAなど)を含む。好ましいメモリ装置202は、SRAMおよびDRAMのメモリを含む。好ましいPCI−XまたはPCI−eのバスコネクタ204は、標準的なカードエッジコネクタである。] 図1a 図1b 図2a
[0057] 図2bは、プリント回路基板/カード200の代替構成を示す。図2bの例では、バス206(PCI−XバスまたはPCI−eバスなど)、1つ以上のディスクコントローラ208、およびディスクコネクタ210がまた、プリント回路基板200上に取り付けられる。当該技術分野で理解されるどんな商品のディスクインタフェース技術でもサポートされることができる。この構成では、ファームウェアソケット104はまた、PCI−XからPCI−Xへのブリッジの役割を果たして、専用のPCI−Xバス206を介して接続されるどんなディスクへの標準アクセスでもプロセッサ112に提供する。ネットワークインタフェースが、図2bに示されるディスクコントローラおよびディスクコネクタに追加して、またはその代わりに使用されることができることは留意されるべきである。] 図2b
[0058] 図2aまたは図2bのいずれの構成でも、ファームウェアソケット104は、メモリ202をバス106にアクセスできるようにし、それによりメモリ202をバスへのアクセスを有するデータソースからFAMへの転送用バッファとしてOSカーネルにより使用するために利用できるようにすることは留意する価値がある。単一のFPGA102が図2aおよび図bのプリント回路基板上に示されているが、プリント回路基板200上に2つ以上のFPGAを含むことにより、またはシステム100に2つ以上のプリント回路基板200を取り付けることにより、複数のFPGAがサポートされることができることが理解されるべきであることもまた留意する価値がある。図3は、複数のFPGAにわたる単一のパイプライン内に多数のFAMが導入される例を示す。] 図2a 図2b 図3
[0059] 図4aは、新しい金融商品価格



の入力ストリームを受信し、受信されたストリームに応答してバスケット計算エンジン400を使用して新しいバスケット価値NAVnewを計算するコプロセッサ140を高い階層で示す。バスケット計算をコプロセッサ140に肩代わりさせることにより、システム100は、新しい金融商品価格に応答して新しいバスケット価値を計算する遅延を大きく低減させることができる。] 図4a
[0060] バスケット計算エンジン(BCE)400は、このエンジンによるNAVnewの計算結果を式(1)から導出することが好ましい。BCE400により式(1)を直接実行することは、M回の乗算、M−1回の加算、および1回の除算を含む。本発明の実行者は、式(1)のそのような直接使用をBCE400内に実装することを選択することもあるが、BCE400の好ましい実施形態が、式(1)の関数を実現するために行われる必要のある算術演算の回数を低減する。バスケットに対するNAVが更新されることになる根拠が、バスケットの基になる金融商品のうちの1つに対する新しい価格であることを考慮すると、バスケットのNAVへの新しい金融商品価格と古い金融商品価格との差の寄与を計算すれば十分である。次に、この計算された寄与は、バスケットに対する古いNAV値に加算されて、更新されたNAV値を得ることができる。この処理は、本明細書ではNAVに対する「差分計算」と呼ばれる。この差分計算手法についての根拠が以下に示され、式(1)から始まる。]
[0061] NAVnew=NAVold+Δj (2)
したがって、NAVnewは、古いNAV価格NAVoldとΔjの和として計算されることができると理解されることができる。ここで、Δjは、NAVへの新しい金融商品価格の差分寄与を表し、Δjは以下の式で計算される:



したがって、差分計算手法は、新しいバスケット価値を計算するのに必要な計算回数を、M回の乗算、M−1回の加算、および1回の除算から、1回の減算、1回の乗算、1回の除算、および1回の加算だけに低減することができると理解されることができる。単一のバスケットが任意の数の金融商品を含むことがあるので、この低減が、計算効率の効果的な改善につながる可能性がある。バスケットの中には、Mの値がかなり大きいものがあることは留意されるべきである。たとえば、ほぼ6,300の有価証券を含むインデックスであるWilshire 5000株式インデックスを計算するためにバスケットが使用されることがある。しかしながら、Wilshire 5000株式インデックス内にそのような多数の有価証券が存在しても、そのようなバスケットのNAV計算は上記の式(2)に基づくので、差分計算手法を利用するBCE400の計算遅延を増加させることにはならない。]
[0062] 図4bは、BCE400による、更新されたバスケット価値の計算の高い階層の処理フローを示す。ステップ402では、BCEが、バスケット価値への新しい金融商品価格



の差分寄与Δjを計算する(式(3)を参照のこと)。ステップ404では、BCEが、計算された差分寄与から、更新されたバスケット価値NAVnewを計算する(式(2)を参照のこと)。] 図4b
[0063] 図5は、BCE400を実現するための好ましいパイプライン500を示す。パイプライン500は、再構成可能論理デバイス102上にファームウェアパイプライン150として導入されることが好ましい。パイプライン500は、バスケット連関探索モジュール502、および下流のバスケット価値更新モジュール504を含むことが好ましい。バスケット連関探索モジュール502は、金融市場データメッセージのストリームを受信し、各メッセージは、単一金融商品の買い呼値、売り呼値、および/または終値の変化を表す。各メッセージは、少なくとも記号識別子、広域取引所識別子、ならびに記号識別子に対応する金融商品に対する1つ以上の終値、買い呼値、および売り呼値を含むことが好ましい。記号識別子(または記号ID)は、特定の金融商品を一意に識別する2進数タグを含むことが好ましい。広域取引所識別子(GEID)は、メッセージが関連する特定の取引所を一意に識別する2進数タグを含むことが好ましい。メッセージ内のデータタグは、メッセージ内の価格情報が金融商品に対する買い呼値/売り呼値/終値に関係するかどうか特定することが好ましい。また、メッセージフィールドは、メッセージがバスケット連関探索モジュール502に到着する時点以前に、異なるメッセージ源の間でそのように正規化されることが好ましい。] 図5
[0064] バスケット連関探索(BAL)モジュール502は、入力メッセージごとに、そのメッセージの対象である金融商品を含む1組のバスケットを決定するように構成される。このバスケットセットは、複数のQ個のバスケットを含むことがある(だが、バスケットセットの中にただ1つのバスケットしか存在しない可能性があることは留意されるべきである)。したがって、金融市場データメッセージごとにバスケット価値を追跡するという大量で厄介な性質は、各メッセージが少なくともQ個のバスケット価値計算を必要とする(1:Qの増大)と理解されることができる。例示的実施形態では、Qの最大値は、1,024バスケットとなることがある。しかしながら、他の値が容易に使用されることがある。]
[0065] 図6は、例示的BALモジュール502を示す。システム100はあらゆる知られている金融商品のレコードを維持することが好ましく、各レコードは、その金融商品、リスト上の各バスケット内の金融商品の相対加重、ならびに金融商品に対する最新の買い呼値、売り呼値、および最終販売価格を含む、バスケットのリストを含むことが好ましい。これらのレコードは、バスケットセット表608に記憶されることが好ましい。システム100はまた、バスケットセットポインタ表604を維持することが好ましい。表604は、バスケットセット表608内の該当するレコードの位置を示す1組のポインタおよび他の情報を含むことが好ましい。バスケットセット表608と組み合わせてバスケットセットポインタ表604を使用することにより、バスケットセット表608の内容を管理する融通性をより高めることが可能になる。図2aおよび図2bに示されるような、コプロセッサがメモリ202を利用する一実施形態では、このメモリ202がSRAMメモリデバイスおよびSDRAMメモリデバイスを含むことがある。バスケットセットポインタ表604はSRAMメモリデバイス内に記憶されることができ、一方、バスケットセット表608はSDRAMメモリデバイス内に記憶されることができることが好ましい。しかしながら、1つ以上のFPGAチップが使用されるコプロセッサの一実施形態については、十分なメモリが利用できるならば、表604および608のいずれか、または両方が、利用できるオンチップメモリ内に記憶されることができることにも留意されるべきである。さらに、表604および608は、システム100内、またはそれと通信できる他のメモリデバイスに記憶されることができる。] 図2a 図2b 図6
[0066] 動作については、BALモジュール502が、メッセージごとの記号IDおよびGEID600を使用して、バスケットセットポインタ表604での探索を行う。記号IDおよびGEID600に基づいて、バスケットセットポインタ606が表604から取り出され、BALモジュール502がこのバスケットセットポインタ606を使用して、バスケットセット表608での探索を行う。バスケットセット表608での探索は、記号IDにより特定される金融商品に対するバスケットセット610を特定し、かつその金融商品に対する記憶された終値/買い呼値/売り呼値612を特定するように動作することが好ましい。各バスケットセットは、その金融商品が構成要素となっている1つ以上のバスケットに対する識別子を含む。]
[0067] 図6に示されるように、減算器616が、現在のメッセージに含まれる新しい終値/買い呼値/売り呼値602から、取り出された終値/買い呼値/売り呼値612を減算して、それにより終値/買い呼値/売り呼値614の変化を計算するように動作することが好ましい。各メッセージは、対象の金融商品に対する1つ以上の価格フィールドを含むことがあることは留意されるべきである。メッセージ内に含まれないどの価格フィールドについても、結果として得られる価格変化はゼロとして取り扱われることが好ましい。したがって、メッセージが金融商品に対する最終販売価格を含まない場合、Δ終値はゼロとなる。] 図6
[0068] 図7はバスケットセットポインタ表604の例示的実施形態をより詳細に示す。表604は複数のレコード700を含み、各レコードは、1組のフラグ702に対応するビット列、ヘッダブロックポインタ704に対応するビット列、および異なるGEID706に対応する複数のビット列を含む。各レコード700は、BALモジュール502が現在のメッセージの記号IDに対応する表604からレコード700を取り出すことができるように記号IDにより指示される。フラグ702は、レコード700が有効であるかどうか(すなわち、対象の金融商品が少なくとも1つのバスケット内に含まれるかどうか)を示す。ヘッダブロックポインタ704は、記号IDに対応する金融商品に対する、表608内のバスケット連関レコードへのポインタの役割を果たす。] 図7
[0069] また、所与の金融商品が複数の金融取引所で代替可能なことがある。所与の取引所(たとえば、NYSE)での金融商品の状態は、金融商品に対する地域見込みとして参照される。すべての取引所にわたるその金融商品の集計した状態は、その金融商品に対する複合見込みとして参照される。終値に対する複合価値は、任意の取引所での金融商品の最新販売価格であることが好ましい。買い呼値に対する複合価値は、その金融商品が売買される取引所のすべてにわたる、金融商品に対する買い呼値のうちの最高価格であることが好ましい。売り呼値に対する複合見込みは、その金融商品が売買される取引所のすべてにわたる、金融商品に対する売り呼値のうちの最高価格であることが好ましい。したがって、複合見込みにおける買い呼値および売り呼値は、一般に最高ビッドおよびオッファ(Best Bid and Offer、BBO)価格として参照される。表604および608により、バスケットが金融商品の地域見込みおよび/または複合見込みで定義されることができるようになる。たとえば、バスケットAが、最大時価総額を有する10の技術関連株の複合見込みを含むことがある。バスケットBが、最大時価総額を有する10の技術関連株のNYSE地域見込みを含むことがある。バスケットCが、10の技術関連株に対する複合見込み、および10の工業株に対するNYSE地域見込みを含むことがある。]
[0070] そのような融通性のあるバスケット定義に対応するためには、表604は、各レコード700内の複数のGEIDフィールド706を利用することが好ましい。各GEIDフィールド706は、関係する金融商品に対する該当する複合バスケット連関レコードおよび/または地域バスケット連関レコードを取り出すための表608へのインデックスの役割をさらに果たす。したがって、BALモジュール502は、現在のメッセージのGEIDを使用して、レコード700内の一致するGEIDフィールド706を特定する。GEID0に対応するフィールド7060は、金融商品に対する複合見込みに対応する、表608内のどんなバスケット連関レコードも特定するために使用されることが好ましい。他のフィールド706は、金融商品に対する地域特有見込みに対応する、表608内のどんなバスケット連関レコードでも特定するために使用される。たとえば、GEID1が金融商品に対するNYSE見込みに対応することがある一方で、GEIDmが金融商品に対するNASDAQ見込みに対応することがある。次に、一致するGEIDフィールド706が表608への追加のインデックスとして使用されて、金融商品の複合見込みと地域見込み両方に適用可能な、金融商品に対する1組のバスケット連関レコードを取り出す。]
[0071] BALモジュール502は、所与の金融商品に適用可能な複合GEID0フィールドを常に取り出すことが好ましい。さらに、金融商品に関する地域価格情報を有するメッセージについては、BALモジュール502はまた、メッセージ内のGEIDフィールドと、その金融商品に対するレコード700内のGEIDフィールド706を照合するように動作する。したがって、BALモジュール502により使用されるバスケットセットポインタ606は、ヘッダブロックポインタ704、複合GEIDインデックス7060、および対象のメッセージに対する地域GEIDインデックス7061を含むことが好ましい。]
[0072] 図8は、バスケットセット表608の例示的実施形態をより詳細に示す。表608は、複数のバスケット連関レコードを含み、各レコードは、異なる金融商品に対するバスケット情報を含む。各レコードは、複数のヘッダブロック800、および場合によっては1つ以上の拡張ブロック822を含むことが好ましい。各ヘッダブロック800は、固定サイズであることが好ましいが、対象の金融商品および特定のGEIDに対応する。さらに、各ヘッダブロック800は、そのブロックに対するGEIDフィールド802に対応するビット列、拡張ポインタ804に対応するビット列、カウントフィールド806に対応するビット列、1組の予約ビット808、対象の金融商品に対する最も新しく記憶された買い呼値810に対応するビット列、対象の金融商品に対する最も新しく記憶された売り呼値812に対応するビット列、対象の金融商品に対する最も新しく記憶された終値814に対応するビット列、および複数組のバスケット情報816に対応する複数のビット列を含むことが好ましい。] 図8
[0073] 各ブロック800は、対象の金融商品に対する複合バスケット連関情報または地域バスケット連関情報を含むことが好ましい。また、ブロック800は、所与の金融商品に対する複合ブロックおよび地域ブロックが、連続したメモリアドレスに記憶されるようにメモリに配置されることが好ましい。この方法では、ヘッダブロックポインタ704は、金融商品の複合ブロック800の位置を突き止めるために使用されることができ、一方、GEIDインデックス706は、ヘッダブロックポインタ704で見つけられるアドレスへの増分として役立てることにより、金融商品に対する適用可能な地域ブロック800の位置を突き止めるために使用されることができる。]
[0074] 表608内の各バスケット情報フィールド816は、バスケット識別子および加重の対(バスケットID、加重)を含むことが好ましい。バスケットIDは、特定のバスケットを特定するのに役立ち、一方、加重は、対象の金融商品に対する特定されたバスケットへの差分寄与を計算するときに使用される加重を特定するのに役立つ。]
[0075] 単一の金融商品がいくつかの異なるバスケット内に存在することがあることを考慮すると、所与の金融商品に必要な(バスケットID、加重)対の数が単一のブロック800内に収まらない可能性がある。そのようなオーバフロー状況に対応するために、表608はまた、複数の拡張ブロックレコード822を有することが好ましい。各拡張ブロックレコード822は、固定サイズであり、拡張ポインタ818に対応するビット列、カウントフィールド820に対応するビット列、金融商品に必要とされる任意の1つ以上の(バスケットID、加重)対816を含むことが好ましい。金融商品に対する(バスケットID、加重)対816の数が単一の拡張ブロック822内に収まることができない場合、拡張ポインタ818は、追加の(バスケットID、加重)対816が見つけられる追加の拡張ブロック822のアドレスを特定するのに役立つ。したがって、複数の拡張ブロック822が、金融商品に関係する(バスケットID、加重)対816のすべてを包含するために必要とされることがあることは留意されるべきである。カウントフィールド820は、対象の拡張ブロック822内にどれだけの(バスケットID、加重)対816が存在するかを特定する。]
[0076] ブロック800内のカウントフィールド806は、そのブロック800内にどれだけの(バスケットID、加重)対816が存在するかを特定するのに役立つ。]
[0077] フィールド810、812、および814は、関係する取引所での対象の金融商品に対する最も新しく記憶された買い呼値/売り呼値/終値を含む。図6に示されるように、この価格情報は、差分寄与計算に関係のある価格変化値614(または差分価格)を計算するために使用される。] 図6
[0078] したがって、表604から取り出されたポインタ704およびGEIDインデックス参照706を使用して、BALモジュール502は、対象のメッセージに関係のある複合情報に対応する、表608内のブロック800(たとえば、「GEID0」とラベルが付けられて図8で示されるブロック800)、および対象のメッセージに関係のある地域情報に対応する、表608内のブロック800(たとえば、「GEID1」とラベルが付けられて図8で示されるレコード800)にアクセスするように構成される。該当する地域ブロックを見つけるために、BALモジュールは一致するGEIDフィールド706を使用して、関係する複合ブロックから該当する地域ブロックまでカウントダウンする。したがって、特定の金融商品に対する関係する地域ブロックが、レコード700内の2番目のGEIDフィールド706(GEID2)と一致するGEID値を有するNYSEブロックである場合、BALモジュールは、複合ブロックから2ブロック後の、表608内の該当するNYSEブロック800を見つける。] 図8
[0079] 図8の例では、図に示すように、地域情報にはオーバフロー状況があり、拡張ポインタ804が拡張ブロック822の位置を示す。これらの探索に基づき、BALモジュール502は、金融商品の該当する地域見込みに対する買い呼値/売り呼値/終値および(バスケットID、加重)対だけでなく、金融商品の複合見込みに対する買い呼値/売り呼値/終値および(バスケットID、加重)対も取り出す。下流の計算が該当する値に基づいていることを保証するために、複合見込みに対する取り出された買い呼値/売り呼値/終値612が、複合見込みに対する取り出された(バスケットID、加重)対610のリストと関連付けられる必要があり、かつ地域見込みに対する取り出された買い呼値/売り呼値/終値612が、地域見込みに対する取り出された(バスケットID、加重)対610のリストと関連付けられる必要があることは留意されるべきである。この連関を維持するために、以下に説明される差分イベントが利用されることが好ましい。] 図8
[0080] BALモジュール502はまた、表608内のレコードを各メッセージ内の新しい価格602で更新するように構成されることが好ましい。これは、表608の該当するフィールドへの書き込み動作を表す、図6の矢印618により示される。しかしながら、メッセージが、終値フィールドなどの特定の価格フィールドを含まない場合、BALモジュール502は、関係するブロック800内の終値フィールド814をその現状で維持することが好ましいことは留意されるべきである。] 図6
[0081] 表604内の各レコード700に対する一連のGEIDフィールド706は、簡単にするために固定サイズとなる場合があることは留意されるべきである。実行者が各レコード700内のGEIDフィールド706にどれだけ多くのサイズを割り当てるかに応じて、金融商品が十分に多くの取引所で売買するので、金融商品の関係するGEIDを記憶するための十分に多くのフィールド706がない場合がある可能性がある。したがって、この状況が発生し、メッセージのGEID600が表604の関係するレコード700内のどのGEIDフィールド706にも一致を見いだせない場合、BALモジュール502は、表608から該当する地域ブロックを取り出すために、その金融商品に対するレコード内の最終ヘッダブロック800までインデックスし、ヘッダブロックのGEIDフィールド802の線形検索を行って、メッセージに関連するGEID600との一致を見つけることが好ましい。]
[0082] GEID600が、表608内の金融商品レコードに対するGEIDフィールド802のどれにも見つからない場合、このことは、GEID600に対応するその金融商品の地域見込みがどのバスケットにも含まれないことを意味することにも留意されるべきである。]
[0083] 金融商品に対する表608内のバスケット連関レコードへの(バスケットID、加重)対の追加、および/またはそこからの削除により、1日を通してバスケットが動的に変更されることがあることも留意されるべきである。]
[0084] バスケットに金融商品を追加するには、システムは、該当する(バスケットID、加重)対を表608内のその金融商品のレコードに追加する。プロセッサ112などのGPP上で実行するソフトウェアで行われることが好ましい制御プロセスが、表604および608のコピーを維持し、表608(および、その金融商品に対するGEIDが、その金融商品に対するレコード700のGEIDフィールド706内に存在しない場合には場合によっては表604)のどこに項目が追加される必要があるかを計算して、バスケットへの金融商品の追加を反映させることが好ましい。これらの決定は、追加される金融商品に対する記号IDおよびGEIDを使用して行われることができる。次に、制御プロセスは、表604および608を更新するために有効な、BALモジュール502により使うためのメモリ書き込みコマンドをパイプラインに送信して、対象の金融商品の追加をバスケットへ反映させることが好ましい。制御プロセスはまた、BALモジュール502により使うための総合(synthetic)イベントをパイプラインに即座に送信するように構成されることもあり、このイベントは、関係のある金融商品に対する現在の価格を含む。この動作は、対象のバスケットに対するNAV値に差分更新を引き起こし、これらの差分更新は、ゼロを基準とする(したがって、全価格寄与が決定される)。しかしながら、制御プロセスは、単にその後の市場イベントがパイプラインに到着するのを待ち、そのときに差分更新が適用されるようにするように構成されることがあることにも留意されるべきである。]
[0085] バスケットからの金融商品の削除は、一般に対象の金融商品に対する表608内のレコードから対象のバスケットに対する(バスケットID、加重)対を削除することを伴う。さらに、NAV値を適切に更新して、バスケットからの金融情報の削除を反映させるためには、制御プロセスは、パイプラインに引き渡すための総合イベントを生成することが好ましく、対処の金融商品に対する価格情報はゼロである。これが、金融商品に対する差分価格値614に、表608内に記憶されたその金融商品に対する価格情報の負の値を生じさせ、したがって、その金融商品に対する対象のバスケットへの全価格寄与を取り除く。]
[0086] システムにバスケット全体を追加するには、制御プロセスは当然、新しいバスケットの構成要素となっている金融商品のすべてに対する(バスケットID、加重)対を表608に追加する適切なメモリ書き込みコマンドをパイプラインに発行することができるということになる。制御プロセスはまた、上記に説明されたように、これらの構成要素となっている金融商品に対する現在の価格情報を反映させる、パイプラインに引き渡すための総合イベントを生成することもできる。さらに、以下の図9および図13に関連して理解されることができるように、制御プロセスは、除数表、NAV表、顧客NAV表、および顧客トリガしきい値表への該当する項目の追加を開始して、システムに新しいバスケットの追加を反映させることができる。] 図13 図9
[0087] システムからバスケット全体を削除するには、制御プロセスは、対象のバスケットの構成要素となっている金融商品のすべてに対する(バスケットID、加重)対の表608からの削除を開始するように構成されることができるということにもなる。同様に、図9および図13に示される表内のレコードもまた、更新されて、削除されるバスケットのバスケットIDに関連するそれらのレコードを削除することができる。] 図13 図9
[0088] BALモジュール502からの出力は、差分イベントのストリームである。各差分イベントは、取り出された(バスケットID、加重)対610、およびその取り出された(バスケットID、加重)対610に対応する金融商品に対する少なくとも1つの計算された価格変化614を含むことが好ましい。本発明の一実施形態では、価格差分のうちの1つ以上(たとえば、Δ買い呼値)がゼロであっても、各差分イベントは価格差分すべてを含む。しかしながら、以下に指摘するように、これが実情である必要はない。]
[0089] BALモジュール502への入力で受信されるメッセージイベントごとに、受信されたメッセージの対象である金融商品が、複数のバスケットの構成要素となっている場合があるという事実により、BALモジュール502の出力で複数の差分イベントが生成されることがあるということも理解されるべきである。このように増加することもあって、パイプライン500の低遅延性質は、バスケット価値を更新するタスクが、異なる取引所からのイベントの流入に遅れないようについていけるようになるという点で特に有利である。]
[0090] 図5に戻ると、バスケット価値更新モジュール504は、BALモジュール502により生成される差分イベントごとに新しいバスケット価値を計算するように構成される。図8は、例示的バスケット価値更新(BVU)モジュール504を示す。] 図5 図8
[0091] 差分イベントバッファ900が、BALモジュール502により生成された差分イベントをバッファに入れる。バッファ900から読み出された差分イベントごとに、BVUモジュール504は、除数表902での探索を行って、現在の差分イベント内のバスケットIDに対応するバスケットに対して、除数dに対する適切な値を式(3)から決定する。したがって、表902は、各除数値を除数の対応するバスケットに対するバスケットIDによりインデックスすることが好ましいことが理解されることができる。差分イベントバッファ900および除数表902は、再構成可能論理デバイス102のための利用可能なオンチップメモリ内に位置することが好ましい。しかしながら、代わりに、バッファ900および表902は、コプロセッサ140内またはそれにアクセス可能などんなメモリ資源上にでも記憶されることが可能であることは留意されるべきである。]
[0092] 次に、NAV更新エンジン950は、入力として差分イベント情報((バスケットID、加重)対610および差分買い呼値/売り呼値/終値614)に加えて、その差分イベントに対する除数値dを受信して、少なくとも1つの更新されたバスケット価値NAVnewを計算する。NAV更新エンジン950は、バスケットごとに複数の異なる種別のバスケットNAVを計算するように構成されることが好ましい。たとえば、図9に示されるように、NAV更新エンジン950は、買い呼値、売り呼値、終値、買い呼値−価格変動(Tick)値、および売り呼値+価格変動値に基づく新しいNAV(それぞれ、買いNAVnew、売りNAVnew、最終NAVnew、買い−価格変動NAVnew、および売り+価格変動NAVnew)を並列に計算するように構成されることができる。これらの例では、価格変動値は、金融商品価格の変化を測定するために関係する取引所により使用される最小増分として定義される。] 図9
[0093] デマルチプレクサ904は、差分イベント情報および除数値の部分を該当するNAV計算論理回路916にルーティングするように動作する。NAV更新エンジンは、複数の並列計算経路を利用して、各種別のバスケットNAVを計算することが好ましい。]
[0094] 買いNAVnewを計算するための計算経路は、バスケットID、加重、除数、およびΔ買い呼値で動作することが好ましい。BVUモジュール504は、バスケットIDに基づいて買いNAV表906での探索を行って、対象のバスケットに対する記憶された買いNAV値(買いNAVold)を取り出す。この買いNAVold値は、買いNAVnew計算の間に式(2)中のNAVold値の役割を果たす。次に、NAV計算論理回路916は、(i)式(3)中のd項に除数値を、式(3)中のwj項に加重値を、および式(3)中の



項にΔ買いの値を使用して、式(3)に従って金融商品に対する差分寄与Δjを計算し、(ii)その後、計算されたΔj、および買いNAVold値に基づき式(2)に従って買いNAVnewを計算する。]
[0095] 売りNAVnewを計算するための計算経路は、バスケットIDに基づき売りNAV表908での探索を行い、Δ買い呼値の代わりにΔ売り呼値を使用するが、買いNAVnewのための計算経路と同じ方法で動作することが好ましい。]
[0096] 最終NAVnewを計算するための計算経路も、バスケットIDに基づき最終NAV表910での探索を行い、Δ買い呼値の代わりにΔ終値を使用するが、買いNAVnewのための計算経路と同じ方法で動作することが好ましい。]
[0097] 同様に、買い−価格変動NAVnew値および売り+価格変動NAVnew値を計算するための計算経路は、バスケットIDに基づきそれぞれ買い−価格変動NAV表912および売り−価格変動NAV表914での探索を行い、それぞれΔ買い呼値およびΔ売り呼値を使用するが、買いNAVnewのための計算経路と同じ方法で動作することが好ましい。]
[0098] 表912は、金融商品に対する価格に基づく、金融商品に対する以前の買い呼値から価格変動値を減算した、バスケットごとの以前に計算されたNAVを記憶することができる。表914は、金融商品に対する価格に基づく、金融商品に対する以前の売り呼値に価格変動値を加算した、バスケットごとの以前に計算されたNAVを記憶することができる。]
[0099] 表906、908、910、912、および914は、再構成可能論理デバイス102のための利用可能なオンチップメモリ内に記憶されることが好ましい。しかしながら、これらの表は、代わりにコプロセッサ140内、またはそれにアクセス可能などんなメモリ資源上にでも記憶されることができることは留意されるべきである。]
[0100] したがって、NAV更新エンジン950は、クロックサイクルごとに、更新バスケットイベントを出力するように構成されることが好ましいことが理解されることができる。ここで、各更新バスケットイベントは、そのバスケットに対するバスケットIDと共に、特定のバスケットに対する複数の異なる更新されたNAVを含む。]
[0101] BVUモジュールはまた、新しく計算されたNAV値を用いて表906、908、910、912、および914を更新するように構成されることが好ましい。したがって、所与のバスケットIDに対する新しく計算された買いNAVnewは、表906内のそのバスケットIDに対する項目にフィードバックされることができ、その結果、同じバスケットIDに関係する次の差分イベントが最新のNAVold値を取り出すことになる。表906、908、910、912、および914に対するメモリは、デュアルポートであることが好ましく、したがって、2つの読み出し/書き込み動作が各クロックサイクルで発生することができるようになる。BVUモジュールのための更新論理回路がパイプライン化されている場合、同じクロックサイクルでの読み出しおよび書き込みの動作の間に所与の表内の同じバスケットID項目に対する競合がまれになり、当該技術分野で知られる技術を使用して特定され、避けられことができることが期待され得る。]
[0102] また、制御プロセスは、バスケットの除数に対する値変化のイベントの際に、BVUモジュールにより使うためのメモリ書き込みコマンドをパイプラインに発行して、除数表902内の項目を更新することができる。そのような制御プロセスは、プロセッサ112などのGPP上で実行するソフトウェアで行われることが好ましい。]
[0103] 図10aは、NAV計算論理回路916の例示的実施形態を示す。乗算器1000が、加重値および各差分イベントからの差分価格情報を使用して、式(3)の



部分を計算するように動作する。除算器1002が、式(3)に従って



値をdで除算して、それによりΔjを計算するように動作する。その後、加算器1004がΔjをNAVold値に加算するために使用され、それにより式(2)に従ってNAVnewを計算する。] 図10a
[0104] 図10bは、NAV計算論理回路916の別の例示的実施形態を示す。図10bの実施形態では、除算演算が最後に実行され、それにより図10aの実施形態と比較してNAV計算の精度を改善する。式(3)を介して式(2)に固有の除算演算が最後に実行されるように算術演算を再配列するために、図10bの実施形態は、乗算器1006を使用して乗算演算を追加することが好ましい。この乗算演算は、乗算器1000により行われる乗算演算と並列に行われことができる。乗算器1006は、NAVold値にdを乗算するように動作し、それにより値Soldが得られる。この実施形態では、金融商品の差分寄与は、図10bの1012に示されるように、



と表されることができる。次に、加算器1004がSoldと



の和を計算する。SoldはdNAVoldに等しいことを考慮すると、



をdで除算する動作が、式(2)および(3)に従ってNAVnewをもたらすことが容易に理解されることができる。] 図10a 図10b
[0105] 図10cは、NAV計算論理回路916のさらに別の例示的実施形態を示す。図10cの実施形態では、図10bの実施形態の精度改善が維持される一方で、乗算器1006の必要性もなくする。そうするためには、図10cのNAV計算論理回路916を利用するBVUモジュールで、NAV表906、908、910、912、および914が、NAVold値の代わりにSold値を記憶することが好ましく、それにより、乗算器1006の必要性をなくする。さらに、表906、908、910、912、および914を更新するために、次の差分イベントが処理されるときに、SnewがSoldの役を果たすように、Snewの値(



と同じである)が通信リンク1010を介して関連する表にフィードバックされる。] 図10b 図10c
[0106] BVUモジュール504は、複数のNAV更新エンジン950を並列に利用して、それにより複数のバスケットに対する複数のバスケットNAV種別を同時に計算することができることは留意されるべきである。この一例が図11に示されている。ここで、BVUモジュール504は、2つの並列なNAV更新エンジン950を含む。このような実施形態では、BVUモジュール504は、クロックサイクルごとにバッファ900から2つの差分イベントを読み出す。差分イベントごとの該当する除数値を特定するために除数表902での探索が行われた後に、ルーティング論理回路1100が、差分イベント情報およびそれに関連する除数値を該当するNAV更新エンジン950にルーティングする。そのようなルーティング論理回路1100は、バスケットIDの範囲の異なる部分を各組の並列エンジン950に割り当てるように構成されることができる。] 図11
[0107] 必要に応じて、ただ1組のNAV表906、908、910、912、および914が複数のNAV更新エンジン950により共用されることができることは留意されるべきである。NAV更新エンジンの数がNAV表から読み出すために利用可能なポート数を超える場合、BVUモジュール504は、異なるNAV更新エンジンからのこれらの表へのアクセスをインタリーブするように構成されることができる。これらの表はまた、そのようなインタリーブを避けるように望まれる場合には、複製されることもできる。同じことが、除数表902に関して主張されることができる(図11は、2つの除数表が利用される一実施形態を示すが、図11では単一の除数表902が異なる経路により共用される場合があることは留意されるべきである)。] 図11
[0108] 図12は、パイプライン500が、BVUモジュール504からの出力と通信する価格イベントトリガモジュール1200を含む一実施形態を示す。価格イベントトリガ(PET)モジュール1200は、BVUモジュール504により生成されるどの更新されたバスケット価値が、関心のある顧客に報告されるべきかを決定するように構成される。これらの決定は、任意の数の基準に基づいて行われることができる。顧客はバスケットの価値が一定量変化するときに彼/彼女が通知されるように要求した特定のトレーダのこともあり、または顧客は売買システム内の別のアプリケーションのこともある。顧客はまた、コプロセッサ140上に導入された別のモジュールのともある(パイプライン500がFAMパイプラインの場合の別のFAM150など)。] 図12
[0109] 図13は、PETモジュール1200の例示的実施形態を示す。PETモジュール1200は、BVUモジュール504により生成された、バスケットに対する各バスケット価値種別に対して並列に動作するように構成されることが好ましい。また、更新されたバスケット価値のうちどれが関心のある顧客に報告されるべきかを決定するために、PETモジュール1200は、各更新されたバスケット価値を顧客により定義されたトリガしきい値と比較することが好ましい。] 図13
[0110] PETモジュール1200は、異なるNAV種別に対応する複数の表にアクセスすることが好ましい。ここで、これらの表は、バスケットごとの顧客参照値を記憶する。これらの参照値は、新しいバスケット価値が、関心のある顧客に報告されるべきかどうかを判断するためにPETモジュール1200により使用される。例示的実施形態では、参照値は、以前にその顧客に報告された対象のバスケットに対するNAV値である。したがって、顧客NAV表は、BVUモジュール504により生成されるバスケット価値種別ごとに存在することが好ましい。すなわち、参照値表1302が、異なるバスケットに対する複数の顧客買いNAVを記憶する。ここで、各顧客買いNAVは、バスケット識別子によりインデックスされる。参照値表1304が、異なるバスケットに対する複数の顧客売りNAVを記憶する(各顧客売りNAVはバスケット識別子によりインデックスされる)。参照値表1306が、異なるバスケットに対する複数の顧客最終NAVを記憶する(各顧客最終NAVはバスケット識別子によりインデックスされる)。参照値表1308が、異なるバスケットに対する複数の顧客買い−価格変動NAVを記憶する(各顧客買い−価格変動NAVはバスケット識別子によりインデックスされる)。参照値表1310が、異なるバスケットに対する複数の顧客売り+価格変動NAVを記憶する(各顧客売り+価格変動NAVはバスケット識別子によりインデックスされる)。これらの表はそれぞれ、顧客に報告されるべき、それぞれの表のNAV種別の最新値を記憶することが好ましい。したがって、新しいバスケット価値により誘発されるトリガのうちの1つのイベントで、PETモジュールが、顧客表内のNAV値を新しいバスケット価値で更新するように構成されることが好ましい。そのような更新論理回路は、トリガを誘発するそれらのNAV値のためだけに表を更新するように構成されることができる、または任意のNAV値がトリガを誘発するときには、表のすべてを更新するように構成されることができる。]
[0111] また、顧客NAVトリガしきい値表は、BVUモジュール504により生成されるバスケット価値種別ごとに存在することが好ましい。したがって、表1314が、異なるバスケットに対する複数の顧客買いNAVトリガしきい値を記憶する。ここで、各顧客買いNAVトリガしきい値は、バスケット識別子によりインデックスされる。表1316が、異なるバスケットに対する複数の顧客売りNAVトリガしきい値を記憶する(各顧客売りNAVトリガしきい値は、バスケット識別子によりインデックスされる)。表1318が、異なるバスケットに対する複数の顧客最終NAVトリガしきい値を記憶する(各顧客最終NAVトリガしきい値は、バスケット識別子によりインデックスされる)。表1320が、異なるバスケットに対する複数の顧客買い−価格変動NAVトリガしきい値を記憶する(各顧客買い−価格変動NAVトリガしきい値は、バスケット識別子によりインデックスされる)。表1322が、異なるバスケットに対する複数の顧客売り+価格変動NAVトリガしきい値を記憶する(各顧客売り+価格変動NAVトリガしきい値は、バスケット識別子によりインデックスされる)。]
[0112] 表1302、1304、1306、1308、1310、1314、1316、1318、1320、および1322は、再構成可能論理デバイス102のための利用可能なオンチップメモリ内に記憶されることが好ましい。しかしながら、これらの表は、代わりにコプロセッサ140内、またはそれにアクセス可能などんなメモリ資源上にでも記憶されることができることは留意されるべきである。]
[0113] また、顧客NAV表および顧客NAVトリガしきい値表は、必要に応じて本発明のこの実施形態の実行者により任意選択で統合されることができることは留意されるべきである。そうする際には、各レコードが顧客買いNAVおよび顧客買いNAVトリガしきい値を含むように、顧客買いNAV表1302内のレコードが、顧客買いNAVトリガしきい値表1314内のレコードと併合される。同様に、表1304は表1316と、表1306は表1318と、表1308は表1320と、および表1310は表1322と併合されることができる。]
[0114] PETモジュール1200は、複数の並列計算経路を使用して、各バスケットイベント内のNAV種別のいずれかが顧客トリガを誘発するかどうかを決定することが好ましい。]
[0115] 第1の計算経路が、現在の更新バスケットイベントのバスケットIDに基づいて、顧客買いNAV表1302での探索、および顧客買いNAVトリガしきい値表1314での探索を行って、それにより顧客買いNAVおよび顧客買いNAVトリガしきい値を取り出すように構成される。顧客買いNAVは、更新バスケットイベント内の買いNAVが比較されるトリガの役を果たす。次に、顧客買いNAVトリガしきい値は、トリガが誘発されたかどうか判断する基準として利用される。次に、NAV−トリガ比較論理回路1312がこの比較を行い、トリガが誘発されたかどうか決定するように動作する。ここで、買いNAVトリガフラグがこの決定の結果を示す。]
[0116] 追加の計算経路が、更新バスケットイベントの売りNAV、最終NAV、買い−価格変動NAV、および売り+価格変動NAVに対してこれらの操作を行って、図13に示されるように、それぞれ売りNAV、最終NAV、買い−価格変動NAV、および売り+価格変動NAVのトリガフラグを生成する。] 図13
[0117] トリガ検出論理回路1324が、計算経路により生成された異なるNAVトリガフラグを受信する。この論理回路1324は、所与の更新バスケットイベントに対するトリガフラグのうちいずれかがハイの状態となっているかどうかを決定するように構成される。トリガ検出論理回路1324は、その更新バスケットイベントに対するフラグのうちいずれかがハイの状態にある場合、更新バスケットイベントを出力として渡すように構成されることが好ましい。したがって、PETモジュール1200は、顧客により定義された基準に従って注目に値すると思われる更新バスケットイベントを通過させるフィルタの役を果たすことが理解されることができる。]
[0118] 図14は、比較論理回路1312の例示的実施形態を図示する。減算器1400が、取り出された顧客NAVを更新バスケットイベントのNAV(NAVnew)から減算するように動作する。次に、比較器1404が、NAVnewと顧客NAVとの差を、取り出された顧客トリガしきい値と比較して、NAVトリガフラグがセットされるべきかどうか決定する。差がしきい値を超える場合、比較器はNAVトリガフラグをハイに設定することが好ましい。] 図14
[0119] したがって、顧客が、バスケット145の買いNAVが0.05ドルだけ変化したときはいつでも、バスケット145に対する売りNAVが0.03ドルだけ変化したときはいつでも、またはバスケット145に対する最終NAVが0.02ドルだけ変化したときはいつでも、通知されたいと思う場合がある。このような例では、バスケット145に対する表1314内の顧客買いNAVトリガしきい値が0.05ドルに等しく設定されることができ、バスケット145に対する表1316内の顧客売りNAVトリガしきい値が、0.03ドルに等しく設定されることができ、バスケット145に対する表1318内の顧客最終NAVトリガしきい値が0.02ドルに等しく設定されることができる。バスケット145に対する更新バスケットイベント内の新しい買いNAV値、売りNAV値、および最終NAV値が、それぞれ20.50ドル、20.40ドル、および20.20ドルで、一方、バスケット145の顧客NAVに対する記憶された値が、それぞれ20ドル、20.42ドル、および20.19ドルの場合、比較論理回路は、買いNAVトリガフラグをハイに、売りNAVトリガフラグをローに、および最終NAVトリガフラグをハイに設定するように動作する。]
[0120] しかしながら、比較論理回路1312は、顧客トリガがいくつかの方法のうちどれかで誘発されたかどうかを決定するように構成されることができることは留意されるべきである。たとえば、顧客しきい値は、必要に応じて、パーセントに換算して表現されることができる(新しいNAVと顧客NAVのパーセント差を計算するために、比較論理回路内で対応する調節を伴う)。また、トリガ条件は、対象のNAVとは異なるトラッキング証券に基づくことができる。たとえば、所与のバスケットに対するトリガ条件が、DJIAに対する記憶された価格に関連して定義されることができる。次に、顧客NAV表は、そのバスケットに対するDJIA価格を記憶し、そのバスケットのNAV価格が、取り出されたDJIA価格と比較されて、トリガしきい値に到達されたかどうかを決定する。]
[0121] PETモジュール1200は、顧客NAV表および顧客トリガしきい値表を適切にポピュレートすることにより裁定取引条件を検出するように構成されることができる。たとえば、ETFについては、ETF自体の現在の株価(TETF)と共に顧客NAV表がポピュレートされることができる。したがって、顧客買いNAV表は、ETFの株式に対する現在の買い呼値と共にポピュレートされることができ、顧客売りNAV表は、ETFの株式に対する現在の売り呼値と共にポピュレートされることができ、顧客最終NAV表は、ETFの株式に対する最新の終値と共にポピュレートされることができるなどである。この方法で顧客NAV表をポピュレートすることにより、PETモジュールは、ETFの株価と、ETFの構成要素となっている金融商品の純資産価値の間に相違があるときを検出することができる。そのような相違は、以下に説明されるように、トレーダにより利用されることができる。]
[0122] したがって、パイプラインによりTETFとETFのNAVの相違について通知される顧客アプリケーションが、1つ以上の金融市場で1つ以上の売買を申し込んで、検出された裁定取引から利益を得ることができる。たとえば、ETFのNAVが、ETFの株価よりも低い場合、顧客アプリケーションが、以下のステップを実行することができる:
ETFのポートフォリオ内の金融商品の株式をNAVにほぼ等しい総費用で購入することによりバスケットを整理し、
整理されたバスケットを投資信託の所有者と交換することによりETF株式を生成し、
取引所でETFをTETFにほぼ等しい価格で売る。]
[0123] さらに、ETFのNAVがETFの株価よりも大きい場合、顧客アプリケーションが上記のステップを逆に実行することができる。すなわち、トレーダが、対象のETFの1つ以上の株式を市場から購入し、ETFをその構成要素となっている金融商品の株式と交換し、次に、構成要素となっている金融商品のこれらの株式を市場で売ることができる。]
[0124] 顧客トリガしきい値表内のトリガしきい値は、以下に説明されるように、価格相違を利用するそのような売買を行う過程に含まれるどんな予想される取引費用も考慮する値と共にポピュレートされることができることも留意されるべきである。したがって、整理されたETFに対する販売価格が、バスケットを整理するために購入された金融商品株式の集計した価格、およびそうする際の関連する取引費用を超える(または構成要素となっている金融商品に対する販売価格が、ETFの購入価格、および関連する取引費用を超える)場合、顧客アプリケーションを使用するトレーダは、裁定取引を介して利益を生むことができる。そのような行為がうまくいくためには、本発明者は、時間が本質的であることに注目し、開示されたパイプラインの低遅延性質は、そのような裁定取引条件が絶えず変化する市場に現れるときに、そのような裁定取引条件を認識しそこから利益を得るトレーダの能力を大きく高めると思われる。]
[0125] さらに、PETモジュール1200は、複数の異なる顧客に対する更新バスケットイベントをフィルタにかけることができることは留意されるべきである。この方法では、加入している各顧客は、それ自身の1組の参照値およびトリガしきい値を定義することができる。そのような機能を実現するためには、各更新バスケットイベントは、図15に示されるように、複数の顧客特有PETモジュール1500を介して異なる顧客に対する複数の基準で並列に比較されることができる。顧客特有PETモジュール1500(それぞれが、図13のPETモジュール1200の顧客特有レプリカントである)は、直列に配置されることができる(ここで、各顧客特有PETモジュールは、各更新バスケットイベントに顧客特有フラグを任意選択で追加して、それによりその顧客のトリガ基準が満たされたかどうかを示す)ことも留意されるべきである。さらに、顧客特有PETモジュール1500はまた、必要に応じて、混成の並列/直列配列に配列されることができる。] 図13 図15
[0126] 図16は、パイプライン500がPETモジュール1200からの出力と通信するイベント生成器モジュール1600を含む一実施形態を示す。イベント生成器モジュール1600は、入力のトリガバスケットイベントをそれぞれ処理して、トリガバスケットイベント内に計算された新しいNAVを含む正規化された出力メッセージイベントを構築するように構成される。] 図16
[0127] 図17は、イベント生成器モジュール1600の例示的実施形態を示す。イベント生成器モジュール1600は、各出力イベント1704にそのイベントに対する関係者一覧を定義するビット列を挿入するように構成されることが好ましい。ここで、関係者一覧は、イベントを通知されるべき各顧客を特定する。この関係者一覧は、各ビット位置が異なる顧客に対応するビットベクトルの形式をとることが好ましい。ハイ状態のどのビット位置についても、これは、そのビット位置に対応する顧客が通知されるべきであることを意味する。] 図17
[0128] 関係者一覧表1700は、バスケットごとにそのようなビットベクトルを記憶することが好ましい。イベント生成器モジュール1600がPETモジュール1200からトリガバスケットイベントを受信するとき、イベント生成器モジュール1600は、トリガバスケットイベント内のバスケットIDに基づき関係者一覧表1700での探索を行う。この探索の結果、そのバスケットIDに対する関係者一覧ベクトルが取り出される。その後、フォーマッタ1702が、図17に示されるように、取り出された関係者一覧ベクトル1705、および受信されたトリガバスケットイベント内の情報から、出力メッセージイベント1704を組み立てる。フォーマッタ1702は、出力イベント1704が、出力イベント1704の顧客受信者(または複数の受信者)により適切に解釈されることができるように、出力イベント1704にヘッダ1708およびトレーラ1710を追加するように構成されることが好ましい。そのような出力イベントの形式は、知られていても(たとえば、FASTおよびFIX)独自でも、いくつかのメッセージングプロトコルのどれにも適合することができる。示されたように、出力イベント1704の関係者一覧ベクトル1706内のビット位置の値は、どの顧客がイベント1704の受信者になるべきかを定義する。] 図17
[0129] 関係者一覧表1700は、再構成可能論理デバイス102のための利用可能なオンチップメモリ内に配置されることが好ましい。しかしながら、表1700は、代わりにコプロセッサ140内、またはそれにアクセス可能などんなメモリ資源上にでも記憶されることができることは留意されるべきである。また、フォーマッタ1702は、任意選択で出力イベント1704用の該当するフィールドを定義する1つ以上のデータ表(図示せず。オンチップまたはオフチップいずれか)にアクセスするように構成される場合があることも留意されるべきである。]
[0130] イベント生成器モジュール1600は、このモジュールが受信するトリガバスケットイベントの数、このモジュールが生成する出力イベントの数、およびトリガバスケットイベントごとの平均イベント間時間などの統計データを記憶するように構成されることがあることも留意されるべきである。]
[0131] 図18は、パイプライン500が、BALモジュール502への入力と通信するメッセージ修飾子フィルタモジュール1800を含む一実施形態を示す。メッセージ修飾子フィルタモジュール1800は、入力メッセージイベントを処理し、かつBCEにとって関心のないどんなメッセージイベントもフィルタにかけて取り除くように構成される。関心のあるメッセージは、一般にNAV価格に影響を及ぼすことがあるメッセージを含む。本発明のこの実施形態の実行者がフィルタにかけたいと思うことがあるメッセージの例が、金融商品に対する買い呼値、売り呼値、または終値を含まないメッセージである。たとえば、実行者が、前日の終値を訂正するだけのメッセージ、および日々の出来高に寄与しない売買に関連するメッセージをフィルタにかけて取り除きたいと望む場合がある。] 図18
[0132] 図19は、図18のパイプライン500で利用されることができる例示的メッセージ修飾子フィルタモジュール1800を示す。表1900が、複数の修飾子を記憶する。モジュール1800は、各入力メッセージのうち1つ以上のフィールド(入力メッセージの相場および売買の修飾子フィールドなど)を、表1900により記憶された別の修飾子と比較するように構成されることが好ましい。各メッセージ修飾子は、一般に条件を通知する小規模のバイナリコードである。表1900内の各修飾子は、各アドレスに通過/放棄フラグを含む、表1902内の項目にマッピングすることが好ましい。したがって、表1900からの修飾子[1]に関連するメッセージフィールドのどれかに一致が見つかった場合、この一致は表1902の位置n−2内の項目へマッピングし、表1902の位置n−2内のビット値が取り出され、AND論理回路1904への入力として提供される。表1900からのメッセージ修飾子は、表1902内の項目に直接アドレスされることができる。しかしながら、表1900のサイズが大きく増える場合、ハッシングが使用されて、修飾子を通過/放棄フラグにマッピングすることができることは留意されるべきである。] 図18 図19
[0133] AND論理回路1904への入力のどれかがハイの場合、これが通過/放棄信号1906をハイとして続かせる。論理回路1908は、入力メッセージを出力に渡すかどうかを決定するときに、信号1906により制御されるように構成される。したがって、表1900からの一致する修飾子のどれかが、表1902内のハイビットにマッピングする場合、この結果、対象のメッセージは、メッセージ修飾子フィルタモジュール1800の出力に渡されることになる。]
[0134] この方法では、修飾子表内の各修飾子が、入力メッセージ内に見つけられた場合、その入力メッセージがパイプライン500の下流に渡される、またはそこへ伝えられるのをさえぎられるメッセージ基準を定義することがある。メッセージがさえぎられるべきことを示すために表1900により記憶されることができるメッセージ修飾子の例が、メッセージを非企業相場、不利益な買い、撤回された相場、保持された売買、および順序が狂った売買のうちのどれでも特定する、メッセージ内の指標である。]
[0135] 表1900および1902は、再構成可能論理デバイス102のための利用できるオンチップメモリ内に配置されることが好ましい。しかしながら、これらの表は、代わりにコプロセッサ140内、またはそこにアクセス可能などんなメモリ資源上でも記憶されることができることは留意されるべきである。]
[0136] パイプライン500への入力メッセージは、メッセージフィールドがパイプライン500により期待される方法でフォーマットされているという点で、正規化されたメッセージであることが好ましいことも留意されるべきである。そのような正規化は、メッセージがパイプライン500に到達する時点以前に任意選択で既に行われていたこともある。しかしながら、任意選択で、パイプライン500は、図20に示されるように、正規化機能を提供するメッセージ正規化モジュール2000を含むこともある。そのような正規化は、記号IDマッピング(ここでは、各メッセージが、メッセージの対象である金融商品を一意に特定する記号ID(固定サイズの2進数タグが好ましい)を割り当てられる)、およびGEIDマッピング(ここでは、各メッセージが、メッセージに対応する取引所を一意に特定するGEID(同様に、固定サイズの2進数タグが好ましい)を割り当てられる)などの機能を含むことが好ましい。そのような正規化機能を行うFAMモジュールが、上記で参照され組み込まれた米国特許出願第11/765,306号に記載されている。] 図20
[0137] BCE400の管理に関して、バスケットおよびトリガ条件が、いくつかの方法のうちのどれでも作成され、修正され、および/または削除されることができることに留意すべきである。たとえば、システム管理者および/または顧客アプリケーションが、バスケットおよび/またはトリガ条件を定義する能力を与えられることができる。]
[0138] バスケットを作成および/または修正するためには、パイプライン500に関連して本明細書に記載される様々な表内の新しい/修正されたバスケットについて、適切な登録および割当が必要とされる。システム管理者が、制御インタフェースを使用して、バスケット構成を追加/修正することがある。顧客アプリケーションが、そのローカル機器上で動作するアプリケーションプログラミングインタフェース(API)を介してバスケット定義を提出することがある。]
[0139] BCEパイプラインは、図21に示されるように、チッカ装置プラットフォーム2100のコプロセッサ140上に導入されることがある。そのようなチッカ装置プラットフォーム2100に関連する追加の詳細が、上記で参照され組み込まれた米国特許出願第11/765,306号明細書で得られることができる。要約すると、取引所からの金融市場データが、プロセッサ112上のカーネルスペースで実行する、O/Sにより供給されるプロトコルスタック2102で受信される(図1aから図bを参照のこと)。upjetドライバ2104が、この取引所データをプロセッサ112上のユーザ空間で実行するマルチスレッドフィード処理ソフトウェア2112に引き渡す。次に、これらのスレッドは、コプロセッサ140宛のデータを、カーネル空間で動作しているハードウェアインタフェースドライバソフトウェア2106に伝達することがある。] 図1a 図21
[0140] 顧客アプリケーションからの命令はまた、最終的にコプロセッサ140に引き渡すためにハードウェアインタフェースドライバ2106に伝達されて、コプロセッサ140上でインスタンスを生成されるBCEパイプラインを適切に構成することがある。そのような命令は、O/Sにより供給されるプロトコルスタック2110に到着し、そこから要求処理ソフトウェアモジュール2116に引き渡される。その後、バックグラウンドおよび保守の処理ソフトウェアモジュール2114が、顧客アプリケーションがバスケットを追加/変更/修正する適切な資格があるかどうかを決定する。そのような資格がある場合、バックグラウンドおよび保守の処理ブロック2114は、以前上記で説明されたように、コプロセッサに運ぶためのコマンド命令をハードウェアインタフェースドライバ2106に伝達して、BCEパイプライン内の表項目を適切に更新して、追加/変更/修正されたバスケットを反映させる。BCEパイプラインからのトリガ条件の追加/修正/削除だけでなくバスケットの削除も、上記に示されるように、同様の過程で行われることができる。]
[0141] 次に、ハードウェアインタフェースドライバ2106は、金融市場データおよびコマンドのインタリーブされたストリームをコプロセッサ140により使うためにそこに運ぶことができる。コプロセッサ140からの出力データが、ハードウェアインタフェースドライバ2106に戻り、そこから、(プロトコルスタック2110を介して)顧客接続に引き渡すために、ならびに/またはバックグラウンドおよび保守の処理ブロック2114に引き渡すために、MDCドライバ2108に供給されることができる。]
[0142] 上記で説明されたように、ETFなどの一部の金融商品バスケットが、それに対して何らかの形の現金要素を有する場合がある。これらの現金要素は、いくつかの方法のうちのどれでもシステムにより考慮されることができる。]
[0143] たとえば、現金要素をバスケットのNAVに挿入するためには、制御プロセスが、パイプラインに引き渡すための総合イベントを生成するように構成されることができる。記号IDが所与の現金勘定に割り当てられ、その複合記号IDに対する価格は1ドルであり、その現金勘定に対する加重値wは、現金勘定の現金価値と等しく設定される。BALモジュールにより使用される表は更新されて、この総合記号IDを反映し、かつ現金勘定がバスケットに対するNAVに影響を与えるようになる。より複雑なシナリオでは、現金勘定の価値が、外国為替市場での関係する通貨の価値で変動することができるように、パイプラインにイベントが引き渡されることができる。]
[0144] バスケットの現金要素をシステムに導入する別の方法は、現金要素量が表1314、1316、1318、1320、および1322のトリガしきい値に組み込まれるように、トリガしきい値を定義することである。]
[0145] また、BALモジュール(またはBVUモジュール)が、そのイベントに対する差分価格のすべてがゼロである場合に、イベントを捨てるように構成されることができることは留意されるべきである。]
[0146] 同様に、図9の実施形態では、NAV更新エンジン950は、対応する差分価格がゼロであるNAV種別に対してさえも更新されたNAVを計算するように構成されることは留意されるべきである。すなわち、BVUモジュールにより処理されている現在の差分イベントが、Δ買い呼値に対して0.03ドルの値を含むが、Δ売り呼値およびΔ終値に対してゼロ値を含むことがある。したがって、図9の実施形態の場合は、古いNAVに対して変化がない場合、並列経路の異なるNAV計算論理回路エンジン916の一部が、新しいNAVを計算するために使用される(たとえば、所与の例については、売りNAVnew、最終NAVnew、および売り+価格変動NAVnewの値は、これらの古い値に比べて変更されない)。パイプラインにより処理されるイベントの大部分が、相場活動を伴うことが予想されることを考慮すると、この構成は依然として有効な効率をもたらすと思われている。しかしながら、差分イベントにどんなゼロ差分イベントも含めず、NAV更新エンジン950内のすべての利用可能な計算経路をより十分に利用するために、差分イベントをNAV更新エンジン950内の該当する計算経路に向ける動的スケジューラおよびメモリコントローラを含めることにより、BVUモジュールの効率を高めることを実行者が自由に選択することができる。] 図9
[0147] NAV計算はまた、出来高加重平均価格(VWAP)などの導出された統計データに基づき、売買された出来高の差など、メッセージ内の利用可能なことがある他のフィールドを使用するように、論理回路がBVUモジュールに追加されることができることも留意されるべきである。]
[0148] 本発明の一実施形態の実行者により望まれる場合、コプロセッサ140は、BCEの計算の他の計算を行うように構成されることができることにも留意されるべきである。たとえば、コプロセッサ140はまた、上記で参照され組み込まれた米国特許出願第11/765,306号に記載されているように、最終価値キャッシング(LVC)モジュールを利用することもできる。]
[0149] 本発明の一実施形態の実行者は、Δjに対する値を計算するが、NAVnewに対する値は計算しないように選択することがあることは留意されるべきである。この場合、BVUモジュールは、どんなNAVnew値も生成する必要がない。そのような例では、PETモジュール1200により使用されるトリガ条件は、NAVnewではなくΔjの変動を中心に作り上げられることができる。そのような状況では、顧客は、任意選択でΔj値からNAV値自体を決定することができるが、実行者は、古いNAV値と実際に組み合わせて、新しいNAV値を見つけるほかに、Δj値自体に価値を見いだすことがある。]
[0150] また、VALモジュール502のための好ましい実施形態は、入力メッセージ内の終値/買い呼値/売り呼値に対する差分値を計算するように構成されるが、そのような差分値の計算は、BALモジュール502から上流の1つ以上のモジュール、またはBCEパイプライン全体により任意選択で行われることができることは留意されるべきである。したがって、BCEパイプライン500への入力メッセージは、対象の金融商品に対するΔ買い呼値、Δ売り呼値、および/またはΔ終値を既に含むことがある。そのような例では、表608は、金融商品ごとの以前の買い呼値/売り呼値/終値を記憶する必要がなく、BALモジュール502は、これらの差分価格を計算するために必要な論理回路を利用する必要がない。]
[0151] さらに、本明細書で開示された好ましい実施形態では、コプロセッサ140は、FPGAなどの再構成可能論理デバイス102を含むが、コプロセッサ140は他の処理デバイスを使用して実現されることができることは留意されるべきである。たとえば、コプロセッサ140は、グラフィックプロセッサユニット(GPU)、汎用グラフィックプロセッサ、チップマルチプロセッサ(CMP)、専用メモリデバイス、複合プログラム可能論理デバイス、特定用途向け集積回路(ASIC)、および他の入出力処理構成部品を含むことがある。さらに、システム100は、直列および並列のマルチコプロセッサアーキテクチャのいずれか、または両方で、複数のコプロセッサ140を利用することがあることは留意されるべきである。]
[0152] なおさらに、本明細書で開示されたパイプラインを使用して、金融情報を処理し、かつ金融商品バスケットに対する更新された値を計算することに関して特別な利点があると本発明者は思っているが、開示されたパイプラインはまた、バスケットに関係する非金融データを処理するときにも、遅延の利点を提供することを本発明者はさらに注目する。たとえば、バスケット計算エンジンは、多国籍小売企業により行われる在庫品の純資産価値を計算するように構成されることがある。したがって、パイプラインへの製品販売および/または製品出荷に対応する入力イベントが、製品ごとに記憶された値を更新するために使用されることができる。ここで、これらの記憶された値は、在庫品カウント値に対応する。製品ごとに割り当てられた加重は、製品に割り当てられた価格値に対応する。したがって、本明細書で開示されたパイプラインのようなパイプラインが、企業の製品の純棚卸評価額を正確に追跡するために使用されることができる。次に、棚卸評価額が所与のしきい値だけ上がるまたは下がるときに、経営者に通知するためにトリガが使用されることがある。]
[0153] 別の例が、ある種の科学実験によるデータ点の集合であるバスケットに関するものである。各データ点は、サイズ、質量などの関連する値を有することがあり、これらのデータ点は、1つ以上の監視場所からストリーミングデータとして時間をかけて到達することがある。パイプラインは、入力データ列からサイズの加重和を計算することによりサイズNAVを、および/または入力データ列から質量の加重和を計算することにより質量NAVを導出するように容易に構成されることができる。]
[0154] 本発明はその好ましい実施形態に関して上記に説明されたが、それに対して本発明の範囲内に依然として収まる様々な修正が加えられてもよい。本発明に対するそのような修正は、本明細書の教示を検討することで知り得る。したがって、本発明の範囲全体が、添付の特許請求の範囲、およびその法的均等物のみにより定義されるものである。]
权利要求:

請求項1
データを処理する方法であって、プロセッサを介してデータをストリーミングするステップであって、データがメッセージを含み、メッセージが要素に対する価値に対応する該ステップと、メッセージに基づき記憶されたデータを取り出すステップであって、取り出されたデータがバスケットに対応し、バスケットが構成要素として要素を有するステップと、取り出されたデータ、およびメッセージに基づきバスケットに対する純価値を計算するステップとを含み、取り出すステップおよび計算するステップが、プロセッサを介したデータストリームとしてプロセッサにより実行される、方法。
請求項2
プロセッサがコプロセッサを備える、請求項1に記載の方法。
請求項3
データが金融市場データを含み、要素が金融商品を含む、請求項1または2に記載の方法。
請求項4
取り出すステップおよび計算するステップをパイプライン方式でさらに実行するステップを含む、請求項1から3のいずれか一項に記載の方法。
請求項5
計算される純価値がバスケットに対する純資産価値(NAV)を含む、請求項1から4のいずれか一項に記載の方法。
請求項6
メッセージが金融商品に関する価格情報を含み、計算するステップが、NAVへの金融商品価格情報の寄与に基づく差分計算手法を使用してNAVを計算するステップを含む、請求項1から5のいずれか一項に記載の方法。
請求項7
取り出すステップがバスケットに関連する以前の価値を取り出すステップをさらに含み、NAVを計算するステップが取り出された以前の価値への寄与を付加して、それによりNAVを計算するステップを含む、請求項1から6のいずれか一項に記載の方法。
請求項8
以前の価値がバスケットに対する以前のNAVを含む、請求項1から7のいずれか一項に記載の方法。
請求項9
以前の価値がSを含み、Sがバスケットに対する除数値を乗算された、バスケットに対する以前のNAVに対応する価値を現し、NAVを計算するステップが寄与とSの和を除数値で除算するステップをさらに含む、請求項1から8のいずれか一項に記載の方法。
請求項10
NAVを計算するステップがバスケットに対する複数の異なるNAVを同時に計算するステップを含み、各NAVが異なるNAV種別に対応する、請求項1から9のいずれか一項に記載の方法。
請求項11
複数の異なるNAV種別が買いNAV、売りNAV、および最終NAVを含む、請求項1から10のいずれか一項に記載の方法。
請求項12
複数の異なるNAV種別が買い−価格変動NAV、および売り+価格変動NAVをさらに含む、請求項1から11のいずれか一項に記載の方法。
請求項13
金融商品が複数のバスケットの構成要素であり、取り出されたデータがバスケットに対応し、計算するステップがバスケットごとのNAVを計算するステップを含む、請求項1から12のいずれか一項に記載の方法。
請求項14
計算するステップが、金融商品価格情報、およびバスケットに対する金融商品に割り当てられた加重値に基づき、そのバスケットごとのNAVへの寄与を計算するステップを含み、取り出すステップがバスケットに対する加重値を取り出すステップをさらに含む、請求項1から13のいずれか一項に記載の方法。
請求項15
取り出すステップがバスケットごとのバスケット識別子を取り出すステップをさらに含み、各バスケット識別子が、バスケットのうちの異なる1つに対応し、加重値のうちの異なる1つに関連付けられる、請求項1から14のいずれか一項に記載の方法。
請求項16
NAVを計算するステップが金融商品に対する価格差分を計算するステップを含み、方法が取り出されたデータに基づき複数の差分イベントを生成するステップをさらに含み、各差分イベントが計算された価格差分、取り出されたバスケット識別子、および取り出された加重値を含み、NAVを計算するステップが各差分イベントに基づきNAVを計算するステップを含み、取り出すステップ、生成するステップ、およびNAVを計算するステップが、金融市場データがコプロセッサを通って流れるときに、コプロセッサによりパイプライン方式で実行される、請求項1から15のいずれか一項に記載の方法。
請求項17
バスケット識別子、およびそれに関連する加重値を複数の対として表に記憶するステップをさらに含む、請求項1から16のいずれか一項に記載の方法。
請求項18
記憶するステップが金融商品に対する以前の価格情報を表に記憶するステップをさらに含む、請求項1から17のいずれか一項に記載の方法。
請求項19
メッセージに基づいて表内の以前の価格情報を更新するステップをさらに含む、請求項1から18のいずれか一項に記載の方法。
請求項20
メッセージが金融商品に対応する、金融商品への金融商品識別子を含み、表が第1の表を含み、記憶するステップが第2の表に複数のポインタを記憶するステップをさらに含み、ポインタが金融商品識別子によりインデックスされ、第1の表内の対がポインタによりインデックスされ、取り出すステップが(i)メッセージの金融商品識別子に基づき第2の表からポインタを取り出すステップ、および(ii)取り出されたポインタに基づいて第1の表から対を取り出すステップをさらに含む、請求項1から19のいずれか一項に記載の方法。
請求項21
顧客からの入力に応答して、表内のバスケット定義を追加および削除するステップをさらに含む、請求項1から20のいずれか一項に記載の方法。
請求項22
顧客からの入力に応答して表を修正することにより、(i)バスケットに金融商品を追加するステップ、(ii)バスケットに関する金融商品に対する加重を修正するステップ、および(iii)バスケットから金融商品を削除するステップからなるグループのうち少なくとも1つを実行するステップをさらに含む、請求項1から21のいずれか一項に記載の方法。
請求項23
メッセージが広域取引所識別子を含み、取り出すステップが広域取引所識別子に基づいて複合金融商品に対応するデータ、および少なくとも1つの地域金融商品に対応するデータを取り出すステップを含む、請求項1から22のいずれか一項に記載の方法。
請求項24
トリガ条件に対して、NAVが顧客に報告されるべきかどうかを決定するようにNAVを処理するステップと、NAVが顧客に報告されることになる処理するステップによる決定に応答して、顧客に引き渡すためのメッセージを生成するステップであって、生成されたメッセージがNAVを含むステップとをさらに含む、請求項1から23のいずれか一項に記載の方法。
請求項25
取り出すステップ、計算するステップ、および処理するステップが、金融市場データがコプロセッサを通って流れるときに、コプロセッサにより実行される、請求項1から24のいずれか一項に記載の方法。
請求項26
取り出すステップ、計算するステップ、および処理するステップをパイプライン方式で実行するステップをさらに含む、請求項1から25のいずれか一項に記載の方法。
請求項27
取り出すステップ、計算するステップ、処理するステップ、および生成するステップが、金融市場データがコプロセッサを通って流れるときに、コプロセッサによりパイプライン方式で行われる、請求項1から26のいずれか一項に記載の方法。
請求項28
処理するステップが、計算されたNAVに関連するバスケット識別子に基づきバスケットに対する参照値を第1の表から取り出すステップと、取り出された参照値と計算されたNAVの相違点を決定するステップと、バスケット識別子に基づき第2の表からバスケットに対するトリガしきい値を取り出すステップと、取り出されたトリガしきい値と相違点を比較して、それによりNAVが顧客に報告されるべきかどうかを決定するステップとを含む、請求項1から27のいずれか一項に記載の方法。
請求項29
相違点を決定するステップが、取り出された参照値と計算されたNAVとの差を計算するステップを含む、請求項1から28のいずれか一項に記載の方法。
請求項30
顧客からの入力に応答して複数のバスケットに対する複数のトリガ条件を定義するステップをさらに含む、請求項1から29のいずれか一項に記載の方法。
請求項31
金融市場データが複数のメッセージを含み、フィルタリングステップを通過するメッセージに対して取り出すステップが実行されるように、少なくとも1つのフィルタリング基準に基づき、取り出すステップの前にメッセージをフィルタリングするステップをさらに含む、請求項1から30のいずれか一項に記載の方法。
請求項32
フィルタリングするステップ、取り出すステップ、および計算するステップが、金融市場データがコプロセッサを通って流れるときに、コプロセッサにより行われる、請求項1から31のいずれか一項に記載の方法。
請求項33
フィルタリングするステップ、取り出すステップ、および計算するステップをパイプライン方式で実行するステップをさらに含む、請求項1から32のいずれか一項に記載の方法。
請求項34
コプロセッサが再構成可能論理デバイスを含み、実行するステップが取り出すステップおよび計算するステップを、再構成可能論理デバイスを用いて実行するステップを含む、請求項1から33のいずれか一項に記載の方法。
請求項35
データを処理するシステムであって、(i)データのストリームを受信し、データが少なくとも1つのメッセージを含み、メッセージが要素の価値に対応し、(ii)メッセージに基づいて記憶されたデータを取り出し、取り出されたデータがバスケットに対応し、バスケットが構成要素として要素を有し、かつ(iii)取り出されたデータ、およびメッセージに基づいてバスケットに対する純価値を計算するように構成されたプロセッサを備える、システム。
請求項36
プロセッサがコプロセッサを含む、請求項35に記載のシステム。
請求項37
プロセッサがコプロセッサと通信する主プロセッサをさらに含み、プロセッサがデータのストリームをコプロセッサに引き渡すように構成される、請求項35または36に記載のシステム。
請求項38
データが金融市場データを含み、要素が金融商品を含む、請求項35から37のいずれか一項に記載のシステム。
請求項39
コプロセッサがパイプライン方式で配列されたバスケット連関探索モジュールおよびバスケット価値更新モジュールを含み、バスケット連関探索モジュールがメッセージに基づいて、記憶されたデータを取り出すように構成され、バスケット価値更新モジュールが取り出されたデータ、およびメッセージに基づいて、バスケットに対する純価値を計算するように構成される、請求項35から38のいずれか一項に記載のシステム。
請求項40
計算された純価値がバスケットに対する純資産価値(NAV)を含み、メッセージが金融商品に関する価格情報を含み、バスケット価値更新モジュールが、NAVへの金融商品価格情報の寄与に基づく差分計算手法を使用してNAVを計算するようにさらに構成される、請求項35から39のいずれか一項に記載のシステム。
請求項41
バスケット価値更新モジュールがバスケットに対する複数の異なるNAVを同時に計算するようにさらに構成され、各NAVが異なるNAV種別に対応する、請求項35から40のいずれか一項に記載のシステム。
請求項42
金融商品が複数のバスケットの構成要素であり、取り出されたデータがバスケットに対応し、バスケット価値更新モジュールがバスケットごとのNAVを計算するようにさらに構成される、請求項35から41のいずれか一項に記載のシステム。
請求項43
バスケット価値更新モジュールが金融商品価格情報、およびバスケットに対する金融商品に割り当てられた加重値に基づいてバスケットごとのNAVへの寄与を計算するようにさらに構成され、バスケット連関探索モジュールがバスケットに対する加重値を取り出すようにさらに構成される、請求項35から42のいずれか一項に記載のシステム。
請求項44
バスケット連関探索モジュールがバスケットごとのバスケット識別子を取り出すようにさらに構成され、各バスケット識別子がバスケットのうちの異なる1つに対応し、加重値のうちの異なる1つに関連付けられる、請求項35から43のいずれか一項に記載のシステム。
請求項45
メッセージが広域取引所識別子を含み、バスケット連関探索モジュールが広域取引所識別子に基づいて複合金融商品に対応するデータ、および少なくとも1つの地域金融商品に対応するデータを取り出すようにさらに構成される、請求項35から44のいずれか一項に記載のシステム。
請求項46
コプロセッサがバスケット価値更新モジュールと通信する価格イベントトリガモジュールをさらに含み、価格イベントトリガモジュールがトリガ条件と対照してNAVを処理して、NAVが顧客に報告されるべきかどうかを決定するように構成される、請求項35から45のいずれか一項に記載のシステム。
請求項47
バスケット連関探索モジュール、バスケット価値更新モジュール、および価格イベントトリガモジュールがパイプライン方式で配列される、請求項35から46のいずれか一項に記載のシステム。
請求項48
コプロセッサが価格イベントトリガモジュールと通信するイベント生成器モジュールをさらに含み、イベント生成器モジュールが、NAVが顧客に報告されるべきであるという価格イベントトリガモジュールによる決定に応答して、顧客に引き渡すためのメッセージを生成するように構成され、生成されたメッセージがNAVを含む、請求項35から47のいずれか一項に記載のシステム。
請求項49
バスケット連関探索モジュール、バスケット価値更新モジュール、および価格イベントトリガモジュールがパイプライン方式で配列される、請求項35から48のいずれか一項に記載のシステム。
請求項50
価格イベントトリガモジュールが、計算されたNAVに関連するバスケット識別子に基づいて、バスケットに対する参照値を第1の表から取り出し、取り出された参照値と計算されたNAVの相違点を決定し、バスケット識別子に基づいて、バスケットに対するトリガしきい値を第2の表から取り出し、取り出されたトリガしきい値と相違点を比較して、それにより、NAVが顧客に報告されるべきかどうかを決定するようにさらに構成される、請求項35から49のいずれか一項に記載のシステム。
請求項51
金融市場データが複数のメッセージを含み、コプロセッサがバスケット連関探索モジュールと通信するメッセージ修飾子フィルタをさらに含み、メッセージ修飾子フィルタは、バスケット連関探索モジュールが、メッセージ修飾子フィルタを渡すメッセージを受信するように、少なくとも1つのフィルタリング基準に基づいてメッセージをフィルタにかけるように構成される、請求項35から50のいずれか一項に記載のシステム。
請求項52
メッセージ修飾子フィルタ、バスケット連関探索モジュール、およびバスケット価値更新モジュールが、パイプライン方式で配列される、請求項35から51のいずれか一項に記載のシステム。
請求項53
コプロセッサが再構成可能論理デバイスを含み、再構成可能論理デバイスが、バスケット連関探索モジュール、およびバスケット価値更新モジュールを備える、請求項35から52のいずれか一項に記載のシステム。
請求項54
プロセッサと通信する別のプロセッサをさらに備え、別のプロセッサが顧客アプリケーションを実行するように構成され、主プロセッサが計算されたバスケット価値に対応するデータを顧客アプリケーションに引き渡すようにさらに構成される、請求項35から53のいずれか一項に記載のシステム。
請求項55
データを処理する方法であって、ビット列がプロセッサを通って流れ込むときに、プロセッサを使用してビット列に対して複数のバスケット計算演算を行って、それにより、複数の純バスケット価値を計算するステップを含む、方法。
請求項56
ビット列が金融市場データを表し、純バスケット価値が金融商品バスケットに対する複数の純資産価値(NAV)を含む、請求項55に記載の方法。
請求項57
プロセッサがコプロセッサおよび主プロセッサを含み、主プロセッサがビット列をコプロセッサに引き渡すように構成され、コプロセッサがバスケット計算演算を行うように構成される、請求項55または56に記載の方法。
請求項58
行うステップが、各パイプラインモジュールがビット列内の異なる金融市場データに対して同時に動作するように、コプロセッサ上に導入された複数のパイプラインモジュールを介してバスケット計算演算を行うステップをさらに含む、請求項55から57のいずれか一項に記載の方法。
請求項59
コプロセッサが再構成可能論理デバイスを備える、請求項55から58のいずれか一項に記載の方法。
請求項60
行うステップが、ビット列を処理して、どのデータが複数の表から取り出されるべきかを決定するステップと、決定されたデータを表から取り出すステップと、取り出されたデータ、およびビット列に基づいてバスケットNAVを計算するステップとをさらに含む、請求項55から59のいずれか一項に記載の方法。
請求項61
バスケットに対する純資産価値(NAV)に関係する価値を計算する装置であって、(i)金融商品に対する価格情報、および金融商品に対する識別子を含むメッセージを受信し、(ii)少なくとも一部が金融商品識別子に基づいて、金融商品が構成要素となっている複数のバスケットを決定し、(iii)新しいNAVへの複数のバスケットごとの差分寄与を計算するように構成されるファームウェアパイプラインを備える、装置。
請求項62
ファームウェアパイプラインが、計算された差分寄与に基づいて複数のバスケットごとの新しいNAVを計算するようにさらに構成される、請求項61に記載の装置。
請求項63
ファームウェアパイプラインが、(i)式に従って新しいNAVへの複数のバスケットごとの差分寄与を計算し、ここでwiがバスケット内の金融商品に対する加重を表し、dがバスケットに対する除数値を表し、が金融商品に対する価格情報を表し、が金融商品に対する古い価格情報を表し、(ii)式NAVnew=NAVold+Δjに従って複数のバスケットごとの新しいNAVを計算し、ここで、NAVnewがバスケットに対する新しいNAVであり、NAVoldがバスケットに対する古いNAVであるようにさらに構成される、請求項61または62に記載の装置。
請求項64
wj値、d値、値、およびNAVold値が記憶される複数の表をさらに含み、ファームウェアパイプラインが、メッセージがパイプラインを通って流れるときに、wj値、d値、値、およびNAVold値を表から取り出すようにさらに構成される、請求項61から63のいずれか一項に記載の装置。
請求項65
ファームウェアパイプラインがコプロセッサ上に実装される、請求項61から64のいずれか一項に記載の装置。
請求項66
コプロセッサが再構成可能論理デバイスを備える、請求項61から65のいずれか一項に記載の装置。
請求項67
表が再構成可能論理デバイス内に記憶される、請求項61から66のいずれか一項に記載の装置。
請求項68
ファームウェアパイプラインが、(i)式に従って複数のバスケットごとに新しいNAVへの差分寄与を計算し、ここで、wjがバスケット内の金融商品に対する加重を表し、が金融商品に対する価格情報を表し、が金融商品に対する古い価格情報を表し、(ii)バスケットごとの価値Soldを取り出し、(iii)バスケットごとにSoldとの和を計算し、(iv)バスケットに対する除数値を取り出し、(v)取り出された除数値により各和を除算することにより複数のバスケットごとの新しいNAVを計算するようにさらに構成される、請求項61から67のいずれか一項に記載の装置。
請求項69
金融市場データを処理する方法であって、金融市場データがコプロセッサを通って流れるときに、コプロセッサを使用して金融市場データのストリームを処理して、金融商品の純資産価値を計算するステップと、計算された純資産価値に基づいてバスケットに関連する裁定取引条件を検出するステップとを含む、方法。
請求項70
検出するステップに応答して、少なくとも1つの金融市場に関して少なくとも1つの売買注文を行って、それにより、検出された裁定取引条件を利用するステップをさらに含む、請求項69に記載の方法。
請求項71
検出するステップが、金融市場データがコプロセッサを通って流れるときに、コプロセッサを使用して裁定取引条件を検出するステップを含む、請求項69から70のいずれか一項に記載の方法。
請求項72
検出するステップが、計算された純資産価値と、参照値との差を計算するステップと、計算された差をトリガしきい値と比較して、裁定取引条件が存在するかどうかを検出するステップとをさらに含む、請求項69から71のいずれか一項に記載の方法。
請求項73
コプロセッサが再構成可能論理デバイスを備える、請求項69から72のいずれか一項に記載の方法。
請求項74
バスケットが上場投資信託(ETF)を含む、請求項69から73のいずれか一項に記載の方法。
請求項75
データを処理する方法であって、要素に対する値を含むデータのストリームを受信するステップと、要素に関係するバスケットを決定するステップと、少なくとも一部が要素値に基づいて、決定されたバスケットに適用可能な価値を計算するステップとを含み、決定するステップがパイプライン内の第1のモジュールにより実行され、計算するステップがパイプライン内の第2のモジュールにより実行される、方法。
請求項76
データが金融市場データを含み、要素が金融商品を含み、要素値が金融商品に対する価格情報を含み、バスケットが金融商品バスケットを含む、請求項75に記載の方法。
請求項77
計算された値が金融商品バスケットに対する純資産価値を含み、方法が、計算された純資産価値に基づいてバスケットに関連する裁定取引条件を検出するステップをさらに含む、請求項75または76に記載の方法。
請求項78
検出するステップに応答して、少なくとも1つの金融市場に関して少なくとも1つの売買注文を行って、それにより、検出された裁定取引条件を利用するステップをさらに含む、請求項75から77のいずれか一項に記載の方法。
請求項79
検出するステップがパイプライン内の第3のモジュールにより実行される、請求項75から78のいずれか一項に記載の方法。
請求項80
検出するステップが、計算された純資産価値と参照値との差を計算するステップと、計算された差をトリガしきい値と比較して、裁定取引条件が存在するかどうかを検出するステップとをさらに含む、請求項75から79のいずれか一項に記載の方法。
請求項81
顧客の入力に応答して、参照値およびトリガしきい値を定義するステップをさらに含む、請求項75から80のいずれか一項に記載の方法。
請求項82
計算するステップが、決定されたバスケットの純資産価値への金融商品の差分寄与を計算するステップを含む、請求項75から81のいずれか一項に記載の方法。
請求項83
計算するステップが、計算された差分寄与に基づいて、決定されたバスケットの純資産価値を計算するステップをさらに含む、請求項75から82のいずれか一項に記載の方法。
請求項84
パイプラインがファームウェアパイプラインを備える、請求項75から83のいずれか一項に記載の方法。
請求項85
ファームウェアパイプラインが再構成可能論理回路内に導入される、請求項75から84のいずれか一項に記載の方法。
請求項86
バスケットが上場投資信託(ETF)を含む、請求項75から85のいずれか一項に記載の方法。
請求項87
計算するステップが、決定されたバスケットに対する純資産価値への金融商品の差分寄与を計算するステップを含む、請求項75から86のいずれか一項に記載の方法。
請求項88
複数のバスケットに対応する複数の表を管理する方法であって、第1の表に複数のポインタを記憶するステップであって、各ポインタが金融商品に対する識別子によりインデックスされる該ステップと、第2の表に複数のヘッダブロックを記憶するステップとを含み、ヘッダブロックがポインタによりインデックスされ、各ヘッダブロックが金融商品に関連付けられ、各ヘッダブロックが、バスケットに対する複数のバスケット識別子、およびバスケットに対応する複数の加重値を含み、バスケットの識別子および加重値が複数の対として表に記憶され、各加重値が、その加重値と対になるバスケット識別子に対応するバスケット内の金融商品に対する加重を定義する、方法。
請求項89
ヘッダブロックが、金融商品に対する価格情報をさらに含む、請求項88に記載の方法。
請求項90
各ヘッダブロックが、そのヘッダブロック内にどれだけの対が存在するかを示すカウント値を含むカウントフィールドをさらに含む、請求項88または89に記載の方法。
請求項91
第2の表に複数の拡張ブロックを記憶するステップをさらに含み、少なくとも複数のヘッダブロックが、拡張ブロックのうちの1つへのポインタを含む拡張ポインタフィールドをさらに含み、拡張ブロックがバスケット識別子および加重値のオーバフロー対を含む、請求項88から90のいずれか一項に記載の方法。
請求項92
第1の表が複数の広域取引所識別子インデックスをさらに含み、各広域取引所識別子インデックスが第2の表内の異なるヘッダブロックに対応する、請求項88から91のいずれか一項に記載の方法。
請求項93
バスケット価値を計算する方法であって、差分イベントを受信するステップであって、差分イベントがバスケットに対するバスケット識別子、金融商品に関する価格差分、バスケットの構成要素となっている金融商品、およびバスケット内の金融商品の加重を表す加重値を含むステップと、バスケット識別子に基づいて、バスケットに対する除数値を取り出すステップと、差分イベントおよび除数値に基づいて、差分計算手法に従ってバスケットに対する純資産価値(NAV)を計算するステップとを含む、方法。
請求項94
コプロセッサを使用して方法の諸ステップを実行することをさらに含む、請求項93に記載の方法。
請求項95
バスケット価値を計算する装置であって、(i)差分イベントを受信し、差分イベントがバスケットに対するバスケット識別子、金融商品に関する価格差分、バスケットの構成要素となっている金融商品、およびバスケット内の金融商品の加重を表す加重値を含み、(ii)バスケット識別子に基づいてバスケットに対する除数値を取り出し、(iii)差分イベントおよび除数値に基づいて差分計算手法に従ってバスケットに対する純資産価値(NAV)を計算するように構成されるプロセッサを備える、装置。
請求項96
バスケット連関方法であって、ビット列を受信するステップであって、ビット列が金融商品に関係するメッセージを表し、メッセージが金融商品に対する記号識別子、およびメッセージに関係する取引所に対する広域取引所識別子(GEID)を含む該ステップと、記号IDに基づいて第1の表での探索を行って、第1の表からレコードを取り出すステップと、取り出されたレコードからポインタを決定するステップと、GEIDに基づいて、取り出されたレコードからインデックス値を決定するステップと、ポインタおよびインデックスの値に基づいて第2の表での探索を行って、金融商品が構成要素となっている各バスケットに関係するバスケット連関データを取り出すステップと、取り出されたバスケット連関データを表すビット列を出力するステップとを含む、方法。
請求項97
バスケット連関装置であって、(i)金融商品に関係するメッセージを受信し、メッセージが金融商品に対する記号識別子、およびメッセージに関係する取引所に対する広域取引所識別子(GEID)を含み、(ii)記号IDに基づいて第1の表での探索を行って、第1の表からレコードを取り出し、(iii)取り出されたレコードからポインタを決定し、(iv)GEIDに基づいて、取り出されたレコードからインデックス値を決定し、(v)ポインタおよびインデックスの値に基づいて第2の表での探索を行って、金融商品が構成要素となっている各バスケットに関係するバスケット連関データを取り出し、(vi)取り出されたバスケット連関データを出力するように構成されるプロセッサを備える、装置。
請求項98
更新されたバスケット価値を顧客に報告する方法であって、ビット列を受信するステップであって、ビット列がバスケットイベントを表し、バスケットイベントがバスケットに対するバスケット識別子、およびバスケットに対する更新された純資産価値(NAV)を含む該ステップと、バスケット識別子に基づいてバスケットに対する参照値を取り出すステップと、取り出された参照値と更新されたNAVの相違点を決定するステップと、バスケット識別子に基づいてバスケットに対するトリガしきい値を取り出すステップと、相違点と取り出されたトリガしきい値を比較して、それにより、更新されたNAVが顧客に報告されるべきかどうかを決定するステップと、更新されたNAVが顧客に報告されるべきであるという比較するステップによる決定に応答して、更新されたNAVを表すビット列を顧客に引き渡すステップとを含む、方法。
請求項99
更新されたバスケット価値を顧客に報告する装置であって、(i)バスケットイベントを受信し、バスケットイベントがバスケットに対するバスケット識別子、およびバスケットに対する更新された純資産価値(NAV)を含み、(ii)バスケット識別子に基づいてバスケットに対する参照値を取り出し、(iii)取り出された参照値と更新されたNAVの相違点を決定し、(iv)バスケット識別子に基づいてバスケットに対するトリガしきい値を取り出し、(v)取り出されたトリガしきい値と相違点を比較して、それにより、更新されたNAVが顧客に報告されるべきかどうかを決定し、(vi)更新されたNAVが顧客に報告されるべきであるという決定に応答して、更新されたNAVを顧客に報告するように構成されるプロセッサを備える、装置。
类似技术:
公开号 | 公开日 | 专利标题
EP3411824B1|2019-10-30|Systems and methods for storing and sharing transactional data using distributed computer systems
Hirschey2020|Do high-frequency traders anticipate buying and selling pressure?
KR101694455B1|2017-01-17|블록체인 기반의 디지털 가상화폐를 환전 또는 송금하기 위한 방법 및 장치
EP3432240A1|2019-01-23|Blockchain including linked digital assets
US20190325519A1|2019-10-24|Determination of implied orders in a trade matching system
US8825541B2|2014-09-02|System and method of margining fixed payoff products
US8311934B2|2012-11-13|System and method for activity based margining
US20190156418A1|2019-05-23|System and method for processing composite trading orders at a client
Pierdzioch et al.2014|On the efficiency of the gold market: Results of a real-time forecasting approach
JP5785556B2|2015-09-30|ネットワーク化されたコンピューティングリソースを用いたデータの同期処理
US8442896B2|2013-05-14|System and method for flexible spread participation
US7024384B2|2006-04-04|Apparatus and process for calculating an option
US7509275B2|2009-03-24|System and method for asymmetric offsets in a risk management system
JP5414520B2|2014-02-12|電子証券取引のための注文管理システム及び方法
JP4244188B2|2009-03-25|Method and system for managing a mortgage securities index
JP6461250B2|2019-01-30|注文分散のための製品および処理
Al‐Najjar et al.2009|The association between dividend payout and outside directorships
US8073764B2|2011-12-06|System and method for hybrid spreading for risk management
US20150294424A1|2015-10-15|Method for virtual currency futures transactions
AU2007288236B2|2011-01-27|Method and apparatus for managing a virtual portfolio of investment objects
US8027904B2|2011-09-27|Method and system for creating and trading corporate debt security derivative investment instruments
US8374951B2|2013-02-12|System, method, and computer program product for managing a virtual portfolio of financial objects
JP2016105339A|2016-06-09|Complex trading order processing system and method
US7395236B2|2008-07-01|Risk management system and method providing rule-based evolution of a portfolio of instruments
US8566205B2|2013-10-22|System and method of making markets for a finite subset of orders placed across continuous and countably infinite outcome spaces
同族专利:
公开号 | 公开日
US10229453B2|2019-03-12|
WO2009089467A2|2009-07-16|
WO2009089467A3|2009-12-30|
US20090182683A1|2009-07-16|
US20190205975A1|2019-07-04|
CA2707044A1|2009-07-16|
EP2243112A2|2010-10-27|
JP5586477B2|2014-09-10|
CA2707044C|2019-02-12|
EP2243112A4|2012-09-26|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2012-01-07| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20120106 |
2012-01-07| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20120106 |
2013-01-05| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130104 |
2013-07-19| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20130719 |
2013-07-31| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130730 |
2013-10-29| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20131028 |
2013-11-06| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20131105 |
2013-11-21| A711| Notification of change in applicant|Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20131120 |
2014-01-31| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140130 |
2014-06-17| TRDD| Decision of grant or rejection written|
2014-06-25| A01| Written decision to grant a patent or to grant a registration (utility model)|Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140624 |
2014-07-31| A61| First payment of annual fees (during grant procedure)|Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140722 |
2014-08-01| R150| Certificate of patent or registration of utility model|Ref document number: 5586477 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
2017-08-08| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2018-08-07| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2019-08-06| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2020-08-05| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
2021-08-02| R250| Receipt of annual fees|Free format text: JAPANESE INTERMEDIATE CODE: R250 |
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]